[英]What is the difference between “source script.sh” and “./script.sh”?
[英]what's the difference between ./script.sh and bash script.sh
在linux系統上,以兩種不同的方式對script.sh的踢法有什么不同嗎?
它們完全一樣嗎?
謝謝
./script.sh期望這個文件在當前目錄中,設置了執行位,文件的第一行是解釋器開頭的路徑(Shebang line)
bash script.sh表示您調用bash並將要執行(解釋)的文件內容作為bash命令傳遞。 這樣,您的文件不需要是可執行文件,並且有一個shebang行。
如果滿足./script.sh的條件,則兩次調用都會導致相同的結果。
script.sh可以被稱為script.anything,如在欺負者的knittl帖子上指出的,腳本由標識
#!/whatever/it/is
運行bash ./script.something意味着你告訴它使用bash執行腳本,這可以返回錯誤而不是運行也欺負忘了
#!/usr/bin/perl
所以你可以有一個名為script.sh的perl腳本
cat perl.sh
#!/usr/bin/perl
print "Hello World\n";
:~/Documents$ ./perl.sh
Hello World
~/Documents$ bash ./perl.sh
Warning: unknown mime-type for "Hello World\n" -- using "application/octet-stream"
Error: no such file "Hello World\n"
我不認為這是完全一樣的。
據我所知,您只需在當前 shell上使用./script.sh
執行腳本。 它不是你正在運行的bash(Bourne Again SHell),它可以是你系統上安裝的任何shell。
如果使用bash script.sh
執行腳本,則告訴系統您希望使用bash shell顯式執行該腳本。
您可以通過調用以下方法查看系統可用的shell:
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
不一定是一樣的。
如果你運行script.sh linux將搜索$ PATH env變量中設置的目錄。
使用./script.sh,linux將運行位於您正在調用的目錄中的腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.