Linux

bash 腳本中的命令和終端中的命令之間的區別

  • April 15, 2019

您在終端中鍵入的命令與您在腳本中包含的命令之間有什麼區別嗎?

您的終端執行一個 shell(很可能是bash),它要求您輸入命令並執行它們。

除了這種互動模式之外,您還可以使用 shell 從文件中執行命令。要執行文件中的命令,您可以直接呼叫 shell,bash script也可以使用“shebang”啟動文件#!/bin/bash並使其可執行(chmod +x script)。然後,您可以將腳本視為二進製文件並執行它,例如,./script將其放在 shell 正在尋找它的地方。( echo $PATH)

很可能您的互動式 shell 和用於執行的 shell 都是bash. 從“第一天學習 linux”的角度來看,bash 在兩種模式下的工作方式完全相同。- 很久以後,您可能會偶然發現細微的差異。如果您真的想詳細了解,我建議您閱讀man bash並蒐索提及“互動式”的地方。(您可以按 搜尋手冊頁/。)

需要注意的重要一點是腳本作為新程序執行。這尤其意味著腳本中設置的變數在呼叫 shell 中不可見。

$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$ 

如果沒有導出a,內部腳本甚至看不到。

引用自:https://unix.stackexchange.com/questions/59495