簡體   English   中英

./script.sh和bash 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的條件,則兩次調用都會導致相同的結果。

為了使第一個表單起作用,文件必須設置可執行位,其次需要有一個shebang ,它指定將使用哪個解釋器。

所以是的,兩種形式都是相同的(當涉及到將要解釋的內容時)。

對於歷史課,請看這個

可以在這里找到當前在linux-kernel中進行she-bang解析的實現

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM