駕馭 Linux 超強(qiáng) source 命令
Linux是世界上最廣泛使用的操作系統(tǒng)。如果你之前沒有接觸過Linux,剛開始可能會覺得它很復(fù)雜,但實(shí)際上它并不復(fù)雜,學(xué)習(xí)Linux和學(xué)習(xí)其他操作系統(tǒng)一樣簡單。本文將深入介紹一個(gè)重要的內(nèi)置命令 source。
關(guān)于source命令及其執(zhí)行方式: 在Linux系統(tǒng)中,source是一個(gè)內(nèi)置的Shell命令,它讀取并執(zhí)行當(dāng)前Shell中文件的內(nèi)容。這些文件通常包含一系列要交給TCL解釋器讀取和運(yùn)行的命令。
如果提供了任何參數(shù),它們將成為將由source執(zhí)行的[文件名]的位置參數(shù)。否則,位置參數(shù)保持不變。
$PATH中的條目用于查找包含[文件名]的目錄,然而,如果文件在$PATH中不存在,它將在當(dāng)前目錄中搜索文件。source命令沒有選項(xiàng),參數(shù)只能是文件名。
語法:
source [filename] [arguments]
其中:
- [filename]:要由source命令執(zhí)行的文件的名稱或路徑。
- [arguments]:當(dāng)文件執(zhí)行時(shí),您提供的任何參數(shù)將成為位置參數(shù)。
點(diǎn)(句點(diǎn))字符可以代替source命令,產(chǎn)生相同的輸出:
. [filename] [arguments]
示例:
創(chuàng)建一個(gè)名為 linuxmi.txt 的文件,并將以下命令粘貼到其中。
echo “Hello Linux迷 www.linuxmi.com”
pwd
date
echo $PATH
現(xiàn)在運(yùn)行source命令,使用你剛剛創(chuàng)建的文件的正確路徑。確保你使用了正確的文件路徑。
source linuxmi.txt
以上的source命令讀取并執(zhí)行了提供的文件中的命令。
輸出如下:
重要提示: 小心!”./”和”source”不完全相同。
“./script”將腳本作為可執(zhí)行文件運(yùn)行,啟動一個(gè)新的shell來運(yùn)行它。 “source script”從當(dāng)前shell環(huán)境中讀取并執(zhí)行文件中的命令。 注意:”./script”不等于”. script”,但”. script”等同于”source script”。
如何使用source命令讀取配置文件:
借助source命令,我們可以創(chuàng)建一個(gè)配置文件并在另一個(gè)文件中讀取它。
基本上,我們需要?jiǎng)?chuàng)建兩個(gè)文件:
- sample-config.sh → 包含一些隨機(jī)配置
- config-reader.sh → 讀取配置文件并執(zhí)行一些操作。
在同一個(gè)目錄下創(chuàng)建這些文件。
創(chuàng)建 sample-config.sh 并添加以下命令:
profile_page="https://www.linuxmi.com/"
article_list="https://linux.linuxmi.com/"
創(chuàng)建config-reader.sh并添加以下命令:
#!/usr/bin/env bash
source sample-config.sh
echo "*****************************"
echo "Profile Page : $profile_page"
echo "List of Articles : $article_list"
echo "*****************************"
config-reader.sh文件包含一個(gè)使用配置文件的source命令。它在后續(xù)命令中使用了config-reader.sh文件中的file變量。
輸出:
執(zhí)行以下命令以讀取配置并在當(dāng)前文件中使用它們 source config-reader.sh
如下圖:
刷新當(dāng)前的Shell環(huán)境
有時(shí)我們希望為經(jīng)常使用的命令設(shè)置一個(gè)別名,以便在任何Shell會話中更容易使用。
我們可以通過創(chuàng)建一個(gè)如下所示的Shell別名命令來開始:
alias ll=’ls -ltrh’
該命令以長格式列出當(dāng)前目錄中的所有文件和文件夾,并按時(shí)間戳升序排列,以易讀的格式顯示。
實(shí)際上,當(dāng)前的命令存在一個(gè)問題,它在當(dāng)前的Shell會話中運(yùn)行得很好,但我們無法在當(dāng)前Shell會話之外訪問它。
但是,我們有一個(gè)解決方案,可以使其成為一個(gè)永久命令,以便在任何Shell會話中都可以訪問它。
我們只需要將這個(gè)別名添加到.bashrc(或.zsh對于macOS)文件中,該文件位于主目錄中::
sudo vim ~/.bashrc
在”#some more ls aliases”部分下面,添加以下內(nèi)容:
alias ll = 'ls -ltrh'
我已經(jīng)添加了類似的內(nèi)容如下:
alias ll = 'ls -ltrh'
alias g = 'git'
alias k = 'kubectl'
添加別名后,我們需要刷新當(dāng)前的Shell環(huán)境,以便測試它是否按預(yù)期工作:;
source ~/.bashrc