Linux
bash 腳本中的命令和終端中的命令之間的區別
您在終端中鍵入的命令與您在腳本中包含的命令之間有什麼區別嗎?
您的終端執行一個 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
,內部腳本甚至看不到。