Shell程式設計---source 和 ./ 和sh 執行指令碼的區別 & 更新環境變數
執行shell指令碼一般有三種方式:sh,./ 和 source。
sh 和 ./ 功能差不多,./不能執行沒有執行許可權的指令碼,而sh可以;兩者都是繼承父shell在子shell環境中執行指令碼,執行完畢後不帶回父shell環境中。
source 或者 點符號. 運算則是在當前shell中執行指令碼。如,執行完指令碼後,可以用echo打印出指令碼的變數。
若在/etc/profile中新增環境變數,則可以使用source /etc/profile來更新指令碼到shell環境中,然後使用echo $PATH 列印環境變數檢視環境變數是否更新過來。否則,需要重啟才能更新環境變數。
相關推薦
Shell程式設計---source 和 ./ 和sh 執行指令碼的區別 & 更新環境變數
執行shell指令碼一般有三種方式:sh,./ 和 source。 sh 和 ./ 功能差不多,./不能執行沒有執行許可權的指令碼,而sh可以;兩者都是繼承父shell在子shell環境中執行指令碼,執行完畢後不帶回父shell環境中。 source 或者
舉例說明source執行指令碼和sh執行指令碼的區別
檢視測試指令碼 [[email protected]]# cat test.sh #!/bin/sh user='whoami' 向測試變數賦值 [[email protected]]# user='222' [[email protected
Linux shell指令碼開頭#!/bin/bash和#!/bin/sh介紹與區別
一直以為在Linux shell指令碼中#都是代表著註釋功能,同樣在指令碼開始的#!/bin/sh也只是告訴使用者這是一個shell指令碼,最近查了下,才發現不是這個意思,分享下。 一、意思 #!/bin/sh是指此指令碼使用/bin/sh來解釋執行,#!是特殊的表示符,其後面跟的是此解釋此指令碼的she
shell程式設計的for和while迴圈
1. for迴圈 語法1:for NAME [in WORDS ... ] ; do COMMANDS; done #!/bin/bashif [[ $# -lt 1 ]] ; then echo no param!!!; exit; fi for a in "[email prote
如何在 Linux Shell 程式設計中定義和使用函式
函式是一段可複用的程式碼。我們通常把重複的程式碼放進函式中並且在不同的地方去呼叫它。庫是函式的集合。我們可以在庫中定義經常使用的函式,這樣其它指令碼便可以不再重複程式碼而使用這些函式。 呼叫函式 在 Shell 中呼叫函式和呼叫其它命令是一模一樣的。例如,如果你
innerjoin 和 exists的執行效率區別
今天在實現業務時發現經常使用exists語句竟然執行效率低下根本不出結果,反而innerjoin可以瞬間得到結果。後來發現是因為exsits需要從40萬的資料集中去匹配200條資料是非常消耗資源的。總結:首先要確定資料分佈情況,高命中的情況下使用exists的效率要比innerjoin的高,低命中率的情況下還
shell程式設計學習4改變語句執行的邏輯輸入輸出等
例項 使用分號; 依次執行,沒有邏輯關係 mkdir /newdir ; cd /newdir //新建並進入newdir 使用&& 與邏輯,一旦出現失敗後面命令不執行 make && make install //保證編譯完成後安裝
【shell程式設計】 nginx 服務的啟動指令碼
#!/bin/bash # # nginx This shell script takes care of starting and stopping # standalone nginx. # config: /usr/local/ngi
sudo命令和root直接執行的區別(轉)
sudo可以用使用者的環境,也就是獲得root許可權時仍然使用使用者自己的環境變數例如,假如我在使用者pansz環境中為vim配好了一套很習慣的配置,直接用root的話,那麼vim就使用root使用者的環境了,我為pansz使用者定製的屌炸天的外掛都沒有了,vim成了原始配置。而用sudo則可以保持使用者的環
jenkins 執行sh指令碼 沒攜帶環境變數,報錯command not founds問題
有個問題困擾很久: 使用jenkins 執行某sh指令碼或者 直接Execute shell編寫指令碼時, 指令碼中很多命令無法執行, 例如 用npm安裝軟體, yarn 編寫web工程 都會報錯command not found 這是因為沒有帶上系統的環境變數。
Linux通過cat EOF新建檔案並新增或追加內容方法並在shell指令碼中配置環境變數時使用
cat << EOF >實現新建檔案並新增內容 [email protected]:/opt# cat << EOF >abcd.txt > 1 > 2 > 3 > eof > EOF [email
Linux32位和64位系統下配置JDK環境變數
以1.7版本為例,其他版本配置方法也一樣(要先確定是多少位的系統 -uname i 命令可以檢視)。 JDK 1.8 官網下載地址: JDK 1.8官網下載(Linux+Windows) 一.建立工作路徑 1.首先將下載好的jdk.tar.gz檔案拷貝到桌面上(Windows上下
java初識 | eclipse和jdk的下載與安裝、環境變數的配置(win10)
首先是jdk的安裝 瀏覽器輸入網址 www.oracle.com/dowloads 訪問oracle官網的下載連結即可(可能開啟速度會慢一些,畢竟不是國內的網站) 開啟之後的介面是這樣的(一個全是英文的看不懂的網站) 然鵝對於我們來說並沒什麼問題。我們只需要滑動滑鼠,將
雲伺服器Ubuntu在/etc/profile配置完jdk每次都要source才能使用java命令(配置永久環境變數)
問題:今天一開啟Ubuntu,輸入 java -version 時,發現如下:減肥藥反彈了!!! 預備知識:在Ubuntu中其實是有幾個profile這樣的檔案存在的,我們通常將環境變數設定在/etc/profile這個檔案中,這個檔案是全域性的。 /etc/prof
Mac筆記本中是用Idea開發工具在Java專案中呼叫python指令碼遇到的環境變數問題解決
問題描述: mac筆記本本身會自帶幾個python版本,比如python2.7版本,我沒有改動mac預設的python版本,只是安裝了python3.7版本。 使用Pycharm開發Python專案沒有遇到什麼問題。但是在java專案中呼叫py指令碼的話,就有問題了。我的專案需要將Pycharm開發好的p
[原]java執行時修改系統環境變數
專案需要在程式執行時修改系統的環境變數,並在結束時還原。 Java執行時可以用System.getEnv(“{EnvName}”)的方法獲得系統環境變數,比如PATH。 但是,Java 6.0沒有setEnv方法,查詢API文件得知Java 8.0也沒有se
linux指令碼中寫環境變數
[[email protected] logstash]# more logstash-start.sh export JAVA_HOME=/usr/java/jdk1.8.0_151 noh
linux 在/etc/profile配置完jdk每次都要source才能使用java命令(配置永久環境變數)
linux每次進入都需要 source /etc/profile才能使用java命令,需要配置永久環境變數,修改etc目錄下的bashrc檔案,在最前面新增export JAVA_HOME=/usr/l
編寫.bat指令碼設定JAVA環境變數
在Linux下用虛擬機器裝了個xp 裝了JDK之後配置環境變數改的太麻煩了 於是就想到寫一個可以直接執行的指令碼 建立一個setPath.bat檔案(注意副檔名) 再把下面的程式碼拷進去儲存即可 指令
shell命令中用source 和sh(或者bash)執行指令碼的區別,以及export的作用
使用者登入到Linux系統後,系統將啟動一個使用者shell,我們暫且稱這個shell為shell父。 在這個shell父中,可以使用shell命令或宣告變數,也可以建立並執行shell指令碼程式。 當使用sh或者bash執行shell指令碼程式時,系統將建立一個子shell,我們暫且稱為