shell執行linux命令
1. 如何運行linux shell程序
如何運行shell程序,如何在shell程序以及後續腳本中使用同一個變數,這些在工作中經常用到, 我找到如下的文章,再加深復習一下。
1 source命令用法:
source FileName
作用:在當前bash環境下讀取並執行FileName中的命令。該filename文件可以無"執行許可權"
註:該命令通常用命令「.」來替代。
如:source .bash_profile
. .bash_profile兩者等效。
source(或點)命令通常用於重新執行剛修改的初始化文檔。
source命令(從 C Shell 而來)是bash shell的內置命令。
點命令,就是個點符號,(從Bourne Shell而來)。
source的程序主體是bash,腳本中的$0變數的值是bash,而且由於作用於當前bash環境,腳本中set的變數將直接起效
2 sh, bash的命令用法:
sh/bash FileName
作用:打開一個子shell來讀取並執行FileName中命令。該filename文件可以無"執行許可權"
註:運行一個shell腳本時會啟動另一個命令解釋器.
每個shell腳本有效地運行在父shell(parent shell)的一個子進程里.
這個父shell是指在一個控制終端或在一個xterm窗口中給你命令指示符的進程.
shell腳本也可以啟動他自已的子進程.
這些子shell(即子進程)使腳本並行地,有效率地地同時運行腳本內的多個子任務.
在ubuntu中sh只是bash的一個鏈接。
由於是在子shell中執行,腳本設置的變數不會影響當前shell。
3 ./的命令用法:
./FileName
作用:打開一個子shell來讀取並執行FileName中命令。該filename文件需要"執行許可權"
註:運行一個shell腳本時會啟動另一個命令解釋器.
每個shell腳本有效地運行在父shell(parent shell)的一個子進程里.
這個父shell是指在一個控制終端或在一個xterm窗口中給你命令指示符的進程.
shell腳本也可以啟動他自已的子進程.
這些子shell(即子進程)使腳本並行地,有效率地地同時運行腳本內的多個子任務.
由於是在子shell中執行,腳本設置的變數不會影響當前shell。
4 export:
一個變數創建時,它不會自動地為在它之後創建的shell進程所知。而命令export可以向後面的shell傳遞變數的值。當一個shell腳本調用並執行時,它不會自動得到原為腳本(調用者)里定義的變數的訪問權,除非這些變數已經被顯式地設置為可用。export命令可以用於傳遞一個或多個變數的值到任何後繼腳本
5. 舉例
比如您在一個腳本里export $KKK=111 ,假如您用./a.sh執行該腳本,執行完畢後,您運行 echo $KKK ,發現沒有值,假如您用source來執行 ,然後再echo ,就會發現KKK=111。因為調用./a.sh來執行shell是在一個子shell里運行的,所以執行後,結構並沒有反應到父shell里,但是 source不同他就是在本shell中執行的,所以能夠看到結果.
小測試
1 建立test.sh
#!/bin/bash
export s=/home/jboss/
2 執行命令: source test.sh
echo $s
結果輸出: /home/jboss/
3 新開個shell
執行命令: ./test.sh
echo $s
結果: 沒有輸出s值
結論:
1、執行腳本時是在一個子shell環境運行的,腳本執行完後該子shell自動退出。
2、一個shell中的系統環境變數才會被復制到子shell中(用export定義的變數);
3、一個shell中的系統環境變數只對該shell或者它的子shell有效,該shell結束時變數消失(並不能返回到父shell中)。3、不用 export定義的變數只對該shell有效,對子shell也是無效的。
直接執行一個腳本文件是在一個子shell中運行的,而source則是在當前shell環境中運行的。
source可以讓腳本影響它們的父shell環境,這和export去影響子shell環境相反.
2. Linux Shell 怎樣獲得命令的執行結果
1、CAT命令在用戶主目錄下創建一名為f1的文本文件,內容:Linux is useful for us all.You can never imagine how great it is。
3. linux中的命令在shell腳本中怎麼寫
執行「nano function.sh」命令,創建新的shell腳本文件,名字為「function.sh」。
編輯新創建的shell腳本文件「function.sh"。函數必須先定義後使用。
shell腳本的內容如下:
#!/bin/bash
add(){
sum_1=$1;
sum_2=$2;
sum=`expr $sum_1 + $sum_2`;
echo "the sum is ${sum}";
}
add $1 $2
4
給新創建的function.sh賦可執行許可權,命令為「chmod 755 function.sh」。
5
使用「./function.sh 1 2」調用腳本,並給腳本傳遞兩個數字。
6
執行命令的結果為「the sum is 3」。
4. 在Linux執行shell腳本的命令是什麼
如果你shell腳本名字是a.sh
你可以 sh a.sh 或者 . ./a.sh
5. linux 怎麼進入shell編程模式
1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。
6. Linux虛擬機的管理及如何在shell中執行命令
遠程linux的虛擬機打開ssh服務,在本地用ssh 加上ip可以直接鏈接的
可以使用vnc進行連接,連接後就可以執行shell命令啦。
7. 如何遠程通過Xshell實現對linux主機的開、關機及重啟
關機的情況無法遠程開機,關機命令shutdown,重啟命令reboot,使用步驟如下:
1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。
8. 關於linux命令行,shell命令,vi命令
shell並不是一個所謂在「終端」執行的東西,而是一個linux內核與用戶之間交互的界面,也可以理解成為是一個專業翻譯的角色。
vi不過就是一個文本編輯器罷了,就如同DOS或Windows系統中的Edit一樣,只不過這個vi文本編輯器的功能是可以靠添加模塊來擴展罷了。在unxu或linux中還有一個文本編輯器叫『emacs』,只不過這個編輯器更煩,更難於掌握。
其實linux並不難學,無非就是些常用的『命令』罷了,而且這些所謂的『命令』多半都是以源碼的方式存在在系統中的。所謂『命令行』不過就是調用這些源碼後,然後讓一個叫『shell』的『傢伙』解釋給linux內核去聽。而這些所謂的『命令』統統都在bin或是sbin的目錄下面。
linux在用戶登錄以後,自行會啟動一個shell,所有用戶必須通過shell才能與系統會話。linux的所謂窗口界面,只不過就是系統在用戶登錄後自行調用了一個shell腳本而啟動了Xwindow後的表象罷了。
所謂『命令行』其實就是shell的解釋命令。
9. linux命令在shell中無法執行的問題
*
*
*
*
*
/bin/sh
/test/joke.sh
>>
/tmp/joke.log
2>&1
如果路徑沒錯的話,應該是執行了,echo
的輸出要重定向到日誌文件,否則是看不到的
每分鍾沒必要加"/1"了
另外,腳本第一行:#!/bin/sh