如何使用 Linux 源命令從文件中讀取和執行

source 是一個方便的內置 shell 命令,它接受參數,將命令解析為腳本,並在 shell 環境中執行它們。 文件內容由源讀取,然後傳遞給執行命令的工具命令語言 (TCL) 解釋器。

讓我們學習如何使用 source 在 Linux 上運行命令和使用 shell 環境,並簡要說明它與 bash 域的區別。

使用 source 在文件上運行命令

要使用 source 命令,您首先需要創建一個示例文件並使用一些 shell 命令完成它。 首先使用 touch 命令創建一個新文件。 在您選擇的文本編輯器中打開文件並輸入一些基本的 shell 命令。

                      
                        
                          touch
                        
                        
                          test
                        
                        
                          .txt
                        
                        
vi test .txt

# Write the commands in the text file:
echo " Hello! "
pwd
ls

# Source the file with either source or the dot syntax
. test .txt
source text .txt

編寫文本文件並繼續將其作為參數傳遞給源命令。 系統將執行文件中的命令並返回輸出。

現在您已經了解瞭如何使用源代碼的基礎知識,讓我們嘗試更改 Bash shell 環境。 但是,在繼續之前,您應該對 Linux 中的環境變量有基本的了解。

使用 source 命令更新 Bash shell 環境

在 Linux 上,環境變量是繼承的,但不可變。 如果您運行修改 $TEST 環境變量的 Bash shell 腳本,該腳本將生成一個新的分叉 shell 進程,並且 $TEST 修改將在其中而不是原始 Bash 環境中進行。

子進程將無法修改父進程的環境。 您只能修改自己的環境。 讓我們通過實踐來理解這一點。 例子:

                      
                        export TEST=
                        
                          "
                        
                        deb
                        
                          "
                        
                        
vi example

# Type these commands in the file
export TEST= " bed "
echo $TEST

# Write out the file, make it executable, and then execute it
chmod +x example
./example # this will return "bed"
echo $TEST # this will return "deb"

這就是 source 命令發揮作用的地方。 使用 source 命令,您可以在相同的 shell 環境中運行腳本,否則會被分叉。 因此,如果您獲得一個修改環境變量的腳本,它將對 Bash shell 環境進行更改。

要試用它,請將上面代碼框中的命令寫入一個新文件並使用源命令而不是使其可執行。

                      
                        
                          # Create a new file and edit it
                        
                        
vi test file
. test_file
echo $TEST # This will return "bed"

如您所見,使用 source 命令,您可以更新主進程的環境變量。 這是 source 命令的主要用例,即修改主環境。

這就是使用 source 命令更新 Bash shell 環境所需的所有步驟。

Linux bash 和源命令之間的區別

Linux bash 和 source 命令的區別在於,當你用 bash 命令運行腳本時,你告訴 Linux 內核創建一個新的 Bash 進程來讀取和執行腳本,將輸出複製到原來的 shell 進程中,並顯示出來...

但是 source 命令是一個內置的 shell,它在當前 shell 進程中讀取和評估文件。 因此,腳本所做的所有更改都將保留在 Bash shell 中。

源命令錯誤故障排除

在某些 Linux 系統上,嘗試使用 font 命令時可能會遇到“未找到字體”錯誤。 您可以通過兩種方式修復此錯誤:

1. 換案

一些 shell 不支持 source 命令。 在這種情況下,您需要使用chsh -s ($which shell_name)領域。

更改 shell 後啟動一個新終端並嘗試使用 source 命令。 如果新的 shell 支持配置,那麼它應該可以正常工作。

2.使用點/點語法

某些 shell 環境不支持“字體“語法,但另一種選擇”.“ 句法。 語法“source”是 Bash 中點的同義詞。 但這在 POSIX shell 中不起作用,因此為了獲得最大的兼容性,請使用點語法。

你應該知道的基本 Linux 命令

Linux shell 命令是使用終端與系統交互的好方法。 它們是使用 *NIX 系統的本質。

雖然您不需要了解所有命令,但熟悉一些有用的命令肯定會在您進入 Linux 世界時獲得回報。

相關文章