shell腳本4種執(zhí)行方式
Linux中shell腳本的執(zhí)行通常有4種方式,分別為工作目錄執(zhí)行,絕對(duì)路徑執(zhí)行,sh執(zhí)行,shell環(huán)境執(zhí)行。
首先,看下我們的腳本內(nèi)容
[tan@tan scripts]$ ll
total 4
-rw-rw-r--. 1 tan tan 68 May 8 23:18 test.sh
[tan@tan scripts]$ cat test.sh
#!/usr/bin/bash
/usr/bin/python <<-EOF
print "Hello Shell"
EOF
1、工作目錄執(zhí)行
工作目錄執(zhí)行,指的是執(zhí)行腳本時(shí),先進(jìn)入到腳本所在的目錄(此時(shí),稱為工作目錄),然后使用 ./腳本方式執(zhí)行
[tan@tan scripts]$ ./test.sh -bash: ./test.sh: Permission denied [tan@tan scripts]$ chmod 764 test.sh [tan@tan scripts]$ ./test.sh Hello Shell
如圖,報(bào)了權(quán)限錯(cuò)誤,上一篇博文有提到,這里需要賦權(quán),使用chmod 764 test.sh 賦權(quán)后就可以正常執(zhí)行了
./的意思是說(shuō)在當(dāng)前的工作目錄下執(zhí)行hello.sh。如果不加上./,bash可能會(huì)響應(yīng)找到不到hello.sh的錯(cuò)誤信息。因?yàn)槟壳暗墓ぷ髂夸?(/data/shell)可能不在執(zhí)行程序默認(rèn)的搜索路徑之列,也就是說(shuō),不在環(huán)境變量PASH的內(nèi)容之中。查看PATH的內(nèi)容可用 echo $PASH 命令。現(xiàn)在的/data/shell就不在環(huán)境變量PASH中的,所以必須加上./才可執(zhí)行。
2、絕對(duì)路徑執(zhí)行
絕對(duì)路徑中執(zhí)行,指的是直接從根目錄/到腳本目錄的絕對(duì)路徑
[tan@tan scripts]$ pwd /home/tan/scripts [tan@tan scripts]$ `pwd`/test.sh Hello Shell [tan@tan scripts]$ /home/tan/scripts/test.sh Hello Shell
這里 `pwd` 指的是該命令執(zhí)行結(jié)果,等同于 /home/tan/scripts
3、sh執(zhí)行
sh執(zhí)行,指的是用腳本對(duì)應(yīng)的sh或bash來(lái)接著腳本執(zhí)行
[tan@tan scripts]$ sh test.sh Hello Shell [tan@tan scripts]$ bash test.sh Hello Shell
注意,若是以方法三的方式來(lái)執(zhí)行,那么,可以不必事先設(shè)定shell的執(zhí)行權(quán)限,甚至都不用寫shell文件中的第一行(指定bash路徑)。因?yàn)榉椒ㄈ?是將hello.sh作為參數(shù)傳給sh(bash)命令來(lái)執(zhí)行的。這時(shí)不是hello.sh自己來(lái)執(zhí)行,而是被人家調(diào)用執(zhí)行,所以不要執(zhí)行權(quán)限。那么不用 指定bash路徑自然也好理解了啊,呵呵……。
4、shell環(huán)境執(zhí)行
shell環(huán)境執(zhí)行,指的是在當(dāng)前的shell環(huán)境中執(zhí)行,可以使用 . 接腳本 或 source 接腳本
[tan@tan scripts]$ . test.sh Hello Shell [tan@tan scripts]$ source test.sh Hello Shell
總結(jié)
以上所述是小編給大家介紹的shell腳本4種執(zhí)行方式,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
linux下編譯boost.python簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇linux下編譯boost.python簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Shell腳本實(shí)現(xiàn)memcache緩存命中率監(jiān)控
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)memcache緩存命中率監(jiān)控,這個(gè)腳本比較簡(jiǎn)單,通過(guò)check_tcp腳本獲取memcached的stats信息,然后將該信息格式化成一個(gè)字符串,然后將get_hits比上cmd_gets就能得到緩存命中率,需要的朋友可以參考下2014-12-12
Linux內(nèi)核鏈表實(shí)現(xiàn)過(guò)程
本文講解Linux內(nèi)核鏈表實(shí)現(xiàn)的過(guò)程,說(shuō)了鏈表的定義及初始化宏定義、操作和刪除操作等內(nèi)容,詳細(xì)看下面2013-11-11
分享70個(gè)經(jīng)典的 Shell 腳本面試題與答案
我們?yōu)槟愕拿嬖嚋?zhǔn)備選擇了 70 個(gè)你可能遇到的 shell 腳本面試問(wèn)題及解答。了解腳本或至少知道基礎(chǔ)知識(shí)對(duì)系統(tǒng)管理員來(lái)說(shuō)至關(guān)重要,它也有助于你在工作環(huán)境中自動(dòng)完成很多任務(wù)2018-02-02
Linux Shell循環(huán)中實(shí)現(xiàn)展示進(jìn)度百分比的實(shí)現(xiàn)方法
這篇文章主要介紹了Linux Shell循環(huán)中實(shí)現(xiàn)展示進(jìn)度百分比的實(shí)現(xiàn)方法的相關(guān)資料,這里提供實(shí)現(xiàn)方法及實(shí)例,需要的朋友可以參考下2017-08-08
Shell腳本監(jiān)控目錄內(nèi)文件改動(dòng)
這篇文章主要介紹了Shell腳本監(jiān)控目錄內(nèi)文件改動(dòng),需要的朋友可以參考下2017-05-05
一天一個(gè)shell命令 linux好管家-磁盤-du命令詳解
這篇文章主要介紹了一天一個(gè)shell命令 linux好管家-磁盤-du命令詳解,需要的朋友可以參考下2016-06-06

