[問題] bash 與 ./ 執行 script 差異

看板Linux作者 (scitamehtam)時間3年前 (2021/10/15 21:23), 編輯推噓6(6013)
留言19則, 8人參與, 3年前最新討論串1/2 (看更多)
想請問我寫了一個 shell script 然後用 bash 去執行 跟用 ./ 去執行 在系統上是否有差異呢? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.44.16 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1634304222.A.4E3.html

10/15 22:00, 3年前 , 1F
查一下 shebang 跟 Bash 的 POSIX sh 相容模式
10/15 22:00, 1F

10/16 13:24, 3年前 , 2F
基本沒差..
10/16 13:24, 2F

10/16 19:09, 3年前 , 3F
不是第一行寫什麼就用什麼執行嗎
10/16 19:09, 3F

10/16 19:16, 3年前 , 4F
./ 這個看第一行 #!/path/to/interpreter
10/16 19:16, 4F

10/16 20:41, 3年前 , 5F
那用bash 執行的話,script第一行寫別的,這樣優先
10/16 20:41, 5F

10/16 20:41, 3年前 , 6F
順序不知道怎麼決定 哈哈
10/16 20:41, 6F

10/16 20:43, 3年前 , 7F
你可以試試看 我猜還是bash
10/16 20:43, 7F

10/16 21:16, 3年前 , 8F
Fork bash 去執行 script, script 第一行寫別的.
10/16 21:16, 8F

10/16 21:17, 3年前 , 9F
bash 會再 fork 第一行寫的往下執行吧
10/16 21:17, 9F

10/16 21:32, 3年前 , 10F
沒有,就是 bash 執行
10/16 21:32, 10F

10/16 21:36, 3年前 , 11F
我剛試了一下 bash會直接忽略第一行的內容 直接往下
10/16 21:36, 11F

10/16 21:37, 3年前 , 12F
執行 tcsh會fork出第一行#!的shell再往下執行
10/16 21:37, 12F

10/16 21:41, 3年前 , 13F

10/17 00:13, 3年前 , 14F
建議用語法不同的指令測試 (像是for)。我不確定tcsh怎麼處理
10/17 00:13, 14F

10/17 00:13, 3年前 , 15F
SHELL這個環境變數
10/17 00:13, 15F

10/17 00:29, 3年前 , 16F
被樓上說中了 結果tcsh也是忽略#!那一行直接往下執行
10/17 00:29, 16F

10/17 00:30, 3年前 , 17F
雖然SHELL變數內容為/bin/bash 但實際上是tcsh在執行
10/17 00:30, 17F

10/17 00:30, 3年前 , 18F
10/17 00:30, 18F

10/17 00:43, 3年前 , 19F
看了一下pstree tcsh確實忽略#!那一行沒錯
10/17 00:43, 19F
文章代碼(AID): #1XQO3UJZ (Linux)
文章代碼(AID): #1XQO3UJZ (Linux)