1. 程式人生 > >shell基礎:指令碼執行方式

shell基礎:指令碼執行方式

假設shell指令碼在/tmp/test.sh下並且有執行許可權
方式一:以相對路徑的方式執行指令碼

[root@rgl tmp]# cd /tmp/
[root@rgl tmp]# ./test.sh 
hello shell
[root@rgl tmp]# 

../的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤資訊。因為目前的工作目錄(/data/shell)可能不在執行程式預設的搜尋路徑之列,也就是說,不在環境變數PASH的內容之中。檢視PATH的內容可用 echo $PASH 命令。現在的/tmp就不在環境變數PASH中的,所以必須加上./才可執行。

方式二:以絕對路徑的方式執行指令碼

[root@rgl tmp]# /tmp/test.sh 
hello shell
[root@rgl tmp]# 

方式三:直接使用bash或sh來執行指令碼

[root@rgl tmp]# cd /tmp/
[root@rgl tmp]# bash test.sh 
hello shell
[root@rgl tmp]# sh test.sh 
hello shell
[root@rgl tmp]#

這種方式使用者不需要擁有指令碼的執行許可權。因為這種方式將hello.sh作為引數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家呼叫執行,所以不需要執行許可權

方式四:使用source啟動shell指令碼

[root@rgl tmp]# cd /tmp/
[root@rgl tmp]# . test.sh 
hello shell
[root@rgl tmp]# source test.sh 
hello shell
[root@rgl tmp]#