如何使用 Linux source 從文件中讀取和執行命令
source 是一個方便的內置 shell 命令,它接受參數、解析腳本中的命令并在 shell 環境中執行它們。該文件的內容由 source 讀取,然后傳遞給工具命令語言 (TCL) 解釋器,該解釋器執行命令。
現在讓我們學習如何在 Linux 上使用 source 執行命令和使用 shell 環境,并簡要說明它與 bash 命令的區別。
使用 source 執行文件中的命令
要使用 source 命令,您首先需要創建一個示例文件并使用一些 shell 命令填充它。首先使用 touch 命令創建一個新文件。在您選擇的文本編輯器中打開文件并編寫一些基本的 shell 命令。
touch linuxmi.txt
vim linuxmi.txt
# 在文本文件中寫入命令:
echo "Hello!Linux迷 linuxmi.com"
pwd
ls
# 使用Source語法或點語法
. linuxmi.txt
source linuxmi.txt
寫出文本文件并繼續將其作為參數傳遞給 source 命令。系統將執行文件中的命令并返回輸出。
現在您已經了解了如何使用 source 的基礎知識,讓我們嘗試更改 Bash shell 環境。但是,在繼續之前,您必須對Linux 中的環境變量有基本的了解。
使用 source 命令更新 Bash Shell 環境
在 Linux 上,環境變量是繼承但不可變的。如果您執行修改環境變量 $TEST 的 Bash shell 腳本,該腳本將生成一個新的分叉 shell 進程,并且 $TEST 的修改將在其中而不是原始 Bash 環境中進行。
子進程將無法修改父進程的環境。它只能修改自己的環境。讓我們用一個實際的例子來理解這一點:
export TEST="deb"
vim linuxmi
# 在文件中鍵入這些命令
export TEST="bed"
echo $TEST
# 寫文件,使其可執行,然后執行它
chmod +x linuxmi
./linuxmi # 這將返回 "bed"
echo $TEST # 這將返回 "deb"
這就是 source 命令發揮作用的地方。使用 source 命令,您可以在相同的 shell 環境中執行腳本,否則會被分叉。因此,如果您獲取修改環境變量的腳本,它將對 Bash shell 環境進行更改。
要對其進行測試,請將上面代碼框中的命令寫入一個新文件并使用 source 命令而不是使其可執行。
# 創建一個新文件并編輯它
vim linux
.linux
echo $TEST # 運行后返回 "bed"
如您所見,使用 source 命令,您可以更新父進程的環境變量。這是 source 命令的主要用例,即修改父環境。
這就是使用 source 命令更新 Bash shell 環境所需的所有步驟。
Linux bash 和 source 命令之間的區別
Linux bash 和 source 命令的區別在于,當你用 bash 命令執行腳本時,它告訴 Linux 內核創建一個新的 Bash 進程來讀取和執行腳本,將輸出復制到原來的 shell 進程中,并顯示出來.
但是 source 命令是一個內置的 shell,它讀取和評估當前 shell 進程中的文件。因此,腳本所做的所有更改都將保留在 Bash shell 中。
排除 source 命令錯誤
在某些 Linux 系統中,您可能會在嘗試使用 source 命令時遇到錯誤“找不到 source”。您可以通過兩種方式修復此錯誤:
1. 換 shell
某些 shell 不支持 source 命令。在這種情況下,您需要使用 chsh -s ($which shell_name)命令更改您的 shell 環境。
在更改 shell 后啟動一個新的終端,并嘗試使用 source 命令。如果新的 shell 支持 source 命令,那么它應該可以完美地工作。
2. 使用點/句點語法
一些 shell 環境不支持“ source ”語法,而是支持“ . ”語法。“source”語法是 Bash 中點的同義詞。但這在 POSIX shell 中不起作用,因此為了獲得最大的兼容性,請使用句點語法。
你應該知道的基本 Linux 命令
Linux shell 命令是使用終端與系統交互的好方法。它們是使用 *NIX 系統的本質。
雖然您不需要了解所有命令,但熟悉一些有用的命令肯定會在您深入 Linux 世界時取得豐碩成果。