bash 與 ./ 執行 script 差異 - Linux

Agatha avatar
By Agatha
at 2021-10-16T23:29

Table of Contents

※ 引述《scitamehtam (scitamehtam)》之銘言:
: 想請問我寫了一個 shell script
: 然後用 bash 去執行
: 跟用 ./ 去執行
: 在系統上是否有差異呢?
: 謝謝!

推文有人提到 shebang 了,這邊在等 D2R 順便加減賺一下 P 幣...

首先是 bash ooxx.sh 的方式,這是強制用 bash 跑,第一行的 #!/bin/bash 或是
#!/bin/sh 會被當成註解,裡面剩下的行數會當作 bash 指令來跑。

舉例來說,弄一個 test.sh,裡面加上 bash -x (把執行的指令列出來):

gslin@home [/tmp] [23:06/W7] cat test.sh
#!/bin/bash -x
echo $0

用 bash test.sh 跑會出現:

gslin@home [/tmp] [23:06/W7] bash test.sh
test.sh

但你直接跑他則會吃 #!/bin/bash -x 這邊的參數:

gslin@home [/tmp] [23:07/W7] ./test.sh
+ echo ./test.sh
./test.sh

在維基百科有說明什麼是 shebang (也就是第一行的 #!):

https://zh.wikipedia.org/wiki/Shebang
https://en.wikipedia.org/wiki/Shebang_(Unix)

另外 shebang 也有一些限制,像是大多數支援 shebang 的作業系統下,#! 那行不
能超過 127 chars:

https://stackoverflow.com/questions/10813538/shebang-line-limit-in-bash-and-linux-kernel

直接在 command line 下用 bash 跑的話,可以塞的參數就大多了。

--
Resistance is futile.
https://blog.gslin.org/ & <[email protected]>

--
Tags: Linux

All Comments

Selena avatar
By Selena
at 2021-10-17T22:54
其他就雖然這邊是 Linux 板,但建議 bash, zsh 之類的
Rosalind avatar
By Rosalind
at 2021-10-18T22:19
shebang 還是寫成 #!/usr/bin/env bash 之類的更通用
Zenobia avatar
By Zenobia
at 2021-10-19T21:44
還有一個小區別就是: bash file的話,
不需要chomd +x file, 就能執行.
Skylar Davis avatar
By Skylar Davis
at 2021-10-20T21:09
感謝推文和PO文的兩位 以前還真的沒特別想到底有什麼差別
Ethan avatar
By Ethan
at 2021-10-21T20:34
謝謝大家討論與分享~
Olivia avatar
By Olivia
at 2021-10-22T19:59
python也是寫#!/usr/bin/env python來套用venv裡的直譯器
Isabella avatar
By Isabella
at 2021-10-23T19:24
謝謝顧及 OpenBSD(bash 在 /usr/local/bin),不過,
只是舉例說明,是還好。
Tristan Cohan avatar
By Tristan Cohan
at 2021-10-24T18:50
還有一個大區別, 鳥哥有講: http://goo.gl/eQzWM
Selena avatar
By Selena
at 2021-10-25T18:15
抱歉, 上面那個網址是跟source才有關.
John avatar
By John
at 2021-10-26T17:40
在 bash 而言,source 和 ./ 是一樣的。其他的 shell
Kelly avatar
By Kelly
at 2021-10-27T17:05
要看是怎麼 implement。POSXI 並沒嚴格限制。
Callum avatar
By Callum
at 2021-10-28T16:30
不是 ./ 是指 . 。

bash 與 ./ 執行 script 差異

Ula avatar
By Ula
at 2021-10-15T21:23
想請問我寫了一個 shell script 然後用 bash 去執行 跟用 ./ 去執行 在系統上是否有差異呢? 謝謝! - ...

有多少人用PipeWire配上高等設備聽歌?

Tom avatar
By Tom
at 2021-10-15T20:56
最近 PipeWire 似乎終於要一統 Linux 音訊亂象了? 她的特性有如低延遲,同時支援以前用 Jack 與 PulseAudio 的程式, 基本上滿足了一般大眾無腦使用與專業混音人士工作上的使用。 由於我是個木耳,耳機都是接在 PC 主機板的音訊出口,不曉得好壞, 有沒有金耳朵前輩願意試試並分享心 ...

無法使用ssh-copy-id root@IP

Hedda avatar
By Hedda
at 2021-10-15T07:42
是這樣的 最近在學習用ansible部屬K8S 參考網站:https://reurl.cc/vg0ZQA mgmt 192.168.0.101 node1 192.168.0.102 其中要在mgmt這台輸入ssh-copy-id rootat192.168.0.102把私鑰丟過去node1 都會顯示a ...

ArchLinux 自動模組載入

Poppy avatar
By Poppy
at 2021-10-14T19:30
大家好, Macbook在kernel mainline有一名為applesmc的核心模組,這個模組負責風扇、背光等控制, 並且在(安裝archlinux的macbook)開機時就會載入。 目前檢查過: - 這個模組不在initramfs中 - 沒有編譯進kernel裡 - 在/etc/modules- ...

Apple iTunes

Victoria avatar
By Victoria
at 2021-10-12T10:38
這個在ios的手機平板備份資料, 是很好用的程式,請問有推出Ubuntu 版嗎? 可以使用文字命令列的方式來安裝嗎? ----- Sent from JPTT on my iPhone - ...