鍍金池/ 教程/ Linux/ shell 環(huán)境
網(wǎng)絡(luò)系統(tǒng)
打印
重定向
使用命令
位置參數(shù)
權(quán)限
文本處理
疑難排解
layout: book-zh title: 自定制 shell 提示符
查找文件
layout: book-zh title: vi 簡介
shell 環(huán)境
什么是 shell
編譯程序
鍵盤高級(jí)操作技巧
流程控制:case 分支
流程控制:if 分支結(jié)構(gòu)
layout: book-zh title: 軟件包管理
進(jìn)程
存儲(chǔ)媒介
格式化輸出
編寫第一個(gè) Shell 腳本
啟動(dòng)一個(gè)項(xiàng)目
流程控制:while/until 循環(huán)
文件系統(tǒng)中跳轉(zhuǎn)
字符串和數(shù)字
讀取鍵盤輸入
歸檔和備份
探究操作系統(tǒng)
流程控制:for 循環(huán)
自頂向下設(shè)計(jì)
數(shù)組
操作文件和目錄
奇珍異寶
從 shell 眼中看世界
正則表達(dá)式

shell 環(huán)境

正如我們之前所討論到的,shell 在 shell 會(huì)話中維護(hù)著大量的信息,這些信息稱為 (shell) 環(huán)境。 存儲(chǔ)在 shell 環(huán)境中的數(shù)據(jù)被程序用來確定配置屬性。然而大多數(shù)程序用配置文件來存儲(chǔ)程序設(shè)置, 某些程序也會(huì)查找存儲(chǔ)在 shell 環(huán)境中的數(shù)值來調(diào)整他們的行為。知道了這些,我們就可以用 shell 環(huán)境 來自定制 shell 經(jīng)歷。

在這一章,我們將用到以下命令:

  • printenv - 打印部分或所有的環(huán)境變量

  • set - 設(shè)置 shell 選項(xiàng)

  • export — 導(dǎo)出環(huán)境變量,讓隨后執(zhí)行的程序知道。

  • alias - 創(chuàng)建命令別名

什么存儲(chǔ)在環(huán)境變量中?

shell 在環(huán)境中存儲(chǔ)了兩種基本類型的數(shù)據(jù),雖然對于 bash 來說,很大程度上這些類型是不可 辨別的。它們是環(huán)境變量和 shell 變量。Shell 變量是由 bash 存放的少量數(shù)據(jù),而剩下的基本上 都是環(huán)境變量。除了變量,shell 也存儲(chǔ)了一些可編程的數(shù)據(jù),命名為別名和 shell 函數(shù)。我們 已經(jīng)在第六章討論了別名,而 shell 函數(shù)(涉及到 shell 腳本)將會(huì)在第五部分?jǐn)⑹觥?/p>

檢查環(huán)境變量

我們既可以用 bash 的內(nèi)部命令 set,或者是 printenv 程序來查看什么存儲(chǔ)在環(huán)境當(dāng)中。set 命令可以 顯示 shell 和環(huán)境變量兩者,而 printenv 只是顯示環(huán)境變量。因?yàn)榄h(huán)境變量內(nèi)容列表相當(dāng)長,所以最好 把每個(gè)命令的輸出結(jié)果管道到 less 命令:

[me@linuxbox ~]$ printenv | less

執(zhí)行以上命令之后,我們應(yīng)該能得到類似以下內(nèi)容:

KDE_MULTIHEAD=false
SSH_AGENT_PID=6666
HOSTNAME=linuxbox
GPG_AGENT_INFO=/tmp/gpg-PdOt7g/S.gpg-agent:6689:1
SHELL=/bin/bash
TERM=xterm
XDG_MENU_PREFIX=kde-
HISTSIZE=1000
XDG_SESSION_COOKIE=6d7b05c65846c3eaf3101b0046bd2b00-1208521990.996705
-1177056199
GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/me/.gtkrc-2.0:/home/me/.kde/sh
are/config/gtkrc-2.0
GTK_RC_FILES=/etc/gtk/gtkrc:/home/me/.gtkrc:/home/me/.kde/share/confi
g/gtkrc
GS_LIB=/home/me/.fonts
WINDOWID=29360136
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
KDE_FULL_SESSION=true
USER=me
LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01
:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:\*.cmd=00;32:\*.exe:

我們所看到的是環(huán)境變量及其數(shù)值的列表。例如,我們看到一個(gè)叫做 USER 的變量,這個(gè)變量值是 "me"。printenv 命令也能夠列出特定變量的數(shù)值:

[me@linuxbox ~]$ printenv USER
me

當(dāng)使用沒有帶選項(xiàng)和參數(shù)的 set 命令時(shí),shell 和環(huán)境變量二者都會(huì)顯示,同時(shí)也會(huì)顯示定義的 shell 函數(shù)。不同于 printenv 命令,set 命令的輸出結(jié)果很禮貌地按照字母順序排列:

[me@linuxbox ~]$ set | less

也可以通過 echo 命令來查看一個(gè)變量的內(nèi)容,像這樣:

[me@linuxbox ~]$ echo $HOME
/home/me

如果 shell 環(huán)境中的一個(gè)成員既不可用 set 命令也不可用 printenv 命令顯示,則這個(gè)變量是別名。 輸入不帶參數(shù)的 alias 命令來查看它們:

[me@linuxbox ~]$ alias
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

一些有趣的變量

shell 環(huán)境中包含相當(dāng)多的變量,雖然你的 shell 環(huán)境可能不同于這里展示的,但是你可能會(huì)看到 以下變量在你的 shell 環(huán)境中:

表12-1: 環(huán)境變量
變量 內(nèi)容
DISPLAY 如果你正在運(yùn)行圖形界面環(huán)境,那么這個(gè)變量就是你顯示器的名字。通常,它是 ":0", 意思是由 X 產(chǎn)生的第一個(gè)顯示器。
EDITOR 文本編輯器的名字。
SHELL shell 程序的名字。
HOME 用戶家目錄。
LANG 定義了字符集以及語言編碼方式。
OLD_PWD 先前的工作目錄。
PAGER 頁輸出程序的名字。這經(jīng)常設(shè)置為/usr/bin/less。
PATH 由冒號(hào)分開的目錄列表,當(dāng)你輸入可執(zhí)行程序名后,會(huì)搜索這個(gè)目錄列表。
PS1 Prompt String 1. 這個(gè)定義了你的 shell 提示符的內(nèi)容。隨后我們可以看到,這個(gè)變量 內(nèi)容可以全面地定制。
PWD 當(dāng)前工作目錄。
TERM 終端類型名。類 Unix 的系統(tǒng)支持許多終端協(xié)議;這個(gè)變量設(shè)置你的終端仿真器所用的協(xié)議。
TZ 指定你所在的時(shí)區(qū)。大多數(shù)類 Unix 的系統(tǒng)按照協(xié)調(diào)時(shí)間時(shí) (UTC) 來維護(hù)計(jì)算機(jī)內(nèi)部的時(shí)鐘 ,然后應(yīng)用一個(gè)由這個(gè)變量指定的偏差來顯示本地時(shí)間。
USER 你的用戶名

如果缺失了一些變量,不要擔(dān)心,這些變量會(huì)因發(fā)行版本的不同而不同。

如何建立 shell 環(huán)境?

當(dāng)我們登錄系統(tǒng)后,啟動(dòng) bash 程序,并且會(huì)讀取一系列稱為啟動(dòng)文件的配置腳本, 這些文件定義了默認(rèn)的可供所有用戶共享的 shell 環(huán)境。然后是讀取更多位于我們自己家目錄中 的啟動(dòng)文件,這些啟動(dòng)文件定義了用戶個(gè)人的 shell 環(huán)境。精確的啟動(dòng)順序依賴于要運(yùn)行的 shell 會(huì)話 類型。有兩種 shell 會(huì)話類型:一個(gè)是登錄 shell 會(huì)話,另一個(gè)是非登錄 shell 會(huì)話。

登錄 shell 會(huì)話會(huì)提示用戶輸入用戶名和密碼;例如,我們啟動(dòng)一個(gè)虛擬控制臺(tái)會(huì)話。當(dāng)我們在 GUI 模式下 運(yùn)行終端會(huì)話時(shí),非登錄 shell 會(huì)話會(huì)出現(xiàn)。

登錄 shell 會(huì)讀取一個(gè)或多個(gè)啟動(dòng)文件,正如表12-2所示:

表12-2: 登錄 shell 會(huì)話的啟動(dòng)文件
文件 內(nèi)容
/etc/profile 應(yīng)用于所有用戶的全局配置腳本。
~/.bash_profile 用戶私人的啟動(dòng)文件??梢杂脕頂U(kuò)展或重寫全局配置腳本中的設(shè)置。
~/.bash_login 如果文件 ~/.bash_profile 沒有找到,bash 會(huì)嘗試讀取這個(gè)腳本。
~/.profile 如果文件 ~/.bash_profile 或文件 ~/.bash_login 都沒有找到,bash 會(huì)試圖讀取這個(gè)文件。 這是基于 Debian 發(fā)行版的默認(rèn)設(shè)置,比方說 Ubuntu。

非登錄 shell 會(huì)話會(huì)讀取以下啟動(dòng)文件:

表12-3: 非登錄 shell 會(huì)話的啟動(dòng)文件
文件 內(nèi)容
/etc/bash.bashrc 應(yīng)用于所有用戶的全局配置文件。
~/.bashrc 用戶私有的啟動(dòng)文件。可以用來擴(kuò)展或重寫全局配置腳本中的設(shè)置。

除了讀取以上啟動(dòng)文件之外,非登錄 shell 會(huì)話也會(huì)繼承它們父進(jìn)程的環(huán)境設(shè)置,通常是一個(gè)登錄 shell。

瀏覽一下你的系統(tǒng),看一看系統(tǒng)中有哪些啟動(dòng)文件。記住-因?yàn)樯厦媪谐龅拇蠖鄶?shù)文件名都以圓點(diǎn)開頭 (意味著它們是隱藏文件),你需要使用帶"-a"選項(xiàng)的 ls 命令。

在普通用戶看來,文件 ~/.bashrc 可能是最重要的啟動(dòng)文件,因?yàn)樗鼛缀蹩偸潜蛔x取。非登錄 shell 默認(rèn) 會(huì)讀取它,并且大多數(shù)登錄 shell 的啟動(dòng)文件會(huì)以能讀取 ~/.bashrc 文件的方式來書寫。

一個(gè)啟動(dòng)文件的內(nèi)容

如果我們看一下典型的 .bash_profile 文件(來自于 CentOS 4 系統(tǒng)),它看起來像這樣:

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH

以"#"開頭的行是注釋,shell 不會(huì)讀取它們。它們在那里是為了方便人們閱讀。第一件有趣的事情 發(fā)生在第四行,伴隨著以下代碼:

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

這叫做一個(gè) if 復(fù)合命令,我們將會(huì)在第五部分詳細(xì)地介紹它,現(xiàn)在我們對它翻譯一下:

If the file ~/.bashrc exists, then
read the ~/.bashrc file.

我們可以看到這一小段代碼就是一個(gè)登錄 shell 得到 .bashrc 文件內(nèi)容的方式。在我們啟動(dòng)文件中, 下一件有趣的事與 PATH 變量有關(guān)系。

曾經(jīng)是否感到迷惑 shell 是怎樣知道到哪里找到我們在命令行中輸入的命令的?例如,當(dāng)我們輸入 ls 后, shell 不會(huì)查找整個(gè)計(jì)算機(jī)系統(tǒng),來找到 /bin/ls(ls 命令的絕對路徑名),而是,它查找一個(gè)目錄列表, 這些目錄包含在 PATH 變量中。

PATH 變量經(jīng)常(但不總是,依賴于發(fā)行版)在 /etc/profile 啟動(dòng)文件中設(shè)置,通過這些代碼:

PATH=$PATH:$HOME/bin

修改 PATH 變量,添加目錄 $HOME/bin 到目錄列表的末尾。這是一個(gè)參數(shù)展開的實(shí)例, 參數(shù)展開我們在第八章中提到過。為了說明這是怎樣工作的,試試下面的例子:

[me@linuxbox ~]$ foo="This is some"
[me@linuxbox ~]$ echo $foo
This is some
[me@linuxbox ~]$ foo="$foo text."
[me@linuxbox ~]$ echo $foo
This is some text.

使用這種技巧,我們可以把文本附加到一個(gè)變量值的末尾。通過添加字符串 $HOME/bin 到 PATH 變量值 的末尾,則目錄 $HOME/bin 就添加到了命令搜索目錄列表中。這意味著當(dāng)我們想要在自己的家目錄下, 創(chuàng)建一個(gè)目錄來存儲(chǔ)我們自己的私人程序時(shí),shell 已經(jīng)給我們準(zhǔn)備好了。我們所要做的事就是 把創(chuàng)建的目錄叫做 bin,趕快行動(dòng)吧。

注意:很多發(fā)行版默認(rèn)地提供了這個(gè) PATH 設(shè)置。一些基于 Debian 的發(fā)行版,例如 Ubuntu,在登錄 的時(shí)候,會(huì)檢測目錄 ~/bin 是否存在,若找到目錄則把它動(dòng)態(tài)地加到 PATH 變量中。

最后,有下面一行代碼:

export PATH

這個(gè) export 命令告訴 shell 讓這個(gè) shell 的子進(jìn)程可以使用 PATH 變量的內(nèi)容。

修改 shell 環(huán)境

既然我們知道了啟動(dòng)文件所在的位置和它們所包含的內(nèi)容,我們就可以修改它們來定制自己的 shell 環(huán)境。

我們應(yīng)該修改哪個(gè)文件?

按照通常的規(guī)則,添加目錄到你的 PATH 變量或者是定義額外的環(huán)境變量,要把這些更改放置到 .bash_profile 文件中(或者其替代文件中,根據(jù)不同的發(fā)行版。例如,Ubuntu 使用 .profile 文件)。 對于其它的更改,要放到 .bashrc 文件中。除非你是系統(tǒng)管理員,需要為系統(tǒng)中的所有用戶修改 默認(rèn)設(shè)置,那么則限定你只能對自己家目錄下的文件進(jìn)行修改。當(dāng)然,有可能會(huì)更改 /etc 目錄中的 文件,比如說 profile 文件,而且在許多情況下,修改這些文件也是明智的,但是現(xiàn)在,我們要 安全起見。

文本編輯器

為了編輯(例如,修改)shell 的啟動(dòng)文件,還有系統(tǒng)中大多數(shù)其它配置文件,我們使用一個(gè)叫做文本 編輯器的程序。文件編輯器是一個(gè),在某些方面,類似于文字處理器的程序,比如說隨著鼠標(biāo)的移動(dòng), 它允許你在屏幕上編輯文字。只有一點(diǎn),文本編輯器不同于文字處理器,就是它只能支持純文本,并且 經(jīng)常包含為便于寫程序而設(shè)計(jì)的特性。文本編輯器是軟件開發(fā)人員用來寫代碼,和系統(tǒng)管理原員用來管理 系統(tǒng)配置文件的重要工具。

Linux 系統(tǒng)有許多不同類型的文本編輯器可用;你的系統(tǒng)中可能已經(jīng)安裝了幾個(gè)。為什么會(huì)有這么 多種呢?可能因?yàn)槌绦騿T喜歡編寫它們,又因?yàn)槌绦騿T們會(huì)頻繁地使用它們,所以程序員編寫編輯器讓 它們按照程序員自己的愿望工作。

文本編輯器分為兩種基本類型:圖形化的和基于文本的編輯器。GNOME 和 KDE 兩者都包含一些流行的 圖形編輯器。GNOME 自帶了一個(gè)叫做 gedit 的編輯器,這個(gè)編輯器通常在 GNOME 菜單中稱為"文本編輯器"。 KDE 通常自帶了三種編輯器,分別是(按照復(fù)雜度遞增的順序排列)kedit,kwrite,kate。

有許多基于文本的編輯器。你將會(huì)遇到一些流行的編輯器,它們是 nano,vi,和 emacs。這個(gè) nano 編輯器 是一個(gè)簡單的,容易使用的編輯器,它是 pico 編輯器的替代物,pico 編輯器由 PINE 郵件套件提供。vi 編輯器 (在大多數(shù) Linux 系統(tǒng)中被 vim 替代,vim 是 "Vi IMproved"的簡寫)是類 Unix 操作系統(tǒng)的傳統(tǒng)編輯器。 vim 是我們下一章節(jié)的討論對象。emacs 編輯器最初由 Richard Stallman 寫成。emacs 是一個(gè)龐大的,多用途的, 可做任何事情的編程環(huán)境。雖然 emacs 很容易獲取,但是大多數(shù) Linux 系統(tǒng)很少默認(rèn)安裝它。

使用文本編輯器

所有的文本編輯器都可以通過在命令行中輸入編輯器的名字,加上你所想要編輯的文件來喚醒。如果所 輸入的文件名不存在,編輯器則會(huì)假定你想要?jiǎng)?chuàng)建一個(gè)新文件。下面是一個(gè)使用 gedit 的例子:

[me@linuxbox ~]$ gedit some_file

這條命令將會(huì)啟動(dòng) gedit 文本編輯器,同時(shí)加載名為 "some_file" 的文件,如果這個(gè)文件存在的話。

所有的圖形文本編輯器都相當(dāng)不言自明的,所以我們在這里不會(huì)介紹它們。反之,我們將集中精力在 我們第一個(gè)基于文本的文本編輯器,nano。讓我們啟動(dòng) nano,并且編輯文件 .bashrc。但是在我們這樣 做之前,先練習(xí)一些"安全計(jì)算"。當(dāng)我們編輯一個(gè)重要的配置文件時(shí),首先創(chuàng)建一個(gè)這個(gè)文件的備份 總是一個(gè)不錯(cuò)的主意。這樣能避免我們在編輯文件時(shí)弄亂文件。創(chuàng)建文件 .bashrc 的備份文件,這樣做:

[me@linuxbox ~]$ cp .bashrc .bashrc.bak

備份文件的名字無關(guān)緊要,只要選擇一個(gè)容易理解的文件名。擴(kuò)展名 ".bak",".sav", ".old",和 ".orig" 都是用來指示備份文件的流行方法。哦,記住 cp 命令會(huì)默默地重寫存在的文件。

現(xiàn)在我們有了一個(gè)備份文件,我們啟動(dòng) nano 編輯器吧:

[me@linuxbox ~]$ nano .bashrc

一旦 nano 編輯器啟動(dòng)后,我們將會(huì)得到一個(gè)像下面一樣的屏幕:

GNU nano 2.0.3
....

注意:如果你的系統(tǒng)中沒有安裝 nano 編輯器,你可以用一個(gè)圖形化的編輯器代替。

這個(gè)屏幕由上面的標(biāo)頭,中間正在編輯的文件文本和下面的命令菜單組成。因?yàn)樵O(shè)計(jì) nano 是為了 代替由電子郵件客戶端提供的編輯器的,所以它相當(dāng)缺乏編輯特性。在任一款編輯器中,你應(yīng)該 學(xué)習(xí)的第一個(gè)命令是怎樣退出程序。以 nano 為例,你輸入 Ctrl-x 來退出 nano。在屏幕底層的菜單中 說明了這個(gè)命令。"^X" 表示法意思是 Ctrl-x。這是控制字符的常見表示法,許多程序都使用它。

第二個(gè)我們需要知道的命令是怎樣保存我們的勞動(dòng)成果。對于 nano 來說是 Ctrl-o。盡然我們 已經(jīng)獲得了這些知識(shí),接下來我們準(zhǔn)備做些編輯工作。使用下箭頭按鍵和 / 或下翻頁按鍵,移動(dòng) 鼠標(biāo)到文件的最后一行,然后添加以下幾行到文件 .bashrc 中:

umask 0002
export HISTCONTROL=ignoredups
export HISTSIZE=1000
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'

注意:你的發(fā)行版可能已經(jīng)包含其中的一些行,但是復(fù)制沒有任何傷害。

下表是所添加行的意義:

表12-4:
文本行 含義
umask 0002 設(shè)置掩碼來解決共享目錄的問題。
export HISTCONTROL=ignoredups 使得 shell 的歷史記錄功能忽略一個(gè)命令,如果相同的命令已被記錄。
export HISTSIZE=1000 增加命令歷史的大小,從默認(rèn)的 500 行擴(kuò)大到 1000 行。
alias l.='ls -d .* --color=auto' 創(chuàng)建一個(gè)新命令,叫做'l.',這個(gè)命令會(huì)顯示所有以點(diǎn)開頭的目錄項(xiàng)。
alias ll='ls -l --color=auto' 創(chuàng)建一個(gè)叫做'll'的命令,這個(gè)命令會(huì)顯示長格式目錄列表。

正如我們所看到的,我們的許多附加物意思直覺上并不是明顯的,所以添加注釋到我們的文件 .bashrc 中是 一個(gè)好主意,可以幫助人們理解。使用編輯器,更改我們的附加物,讓它們看起來像這樣:

# Change umask to make directory sharing easier
umask 0002
 # Ignore duplicates in command history and increase
 # history size to 1000 lines
export HISTCONTROL=ignoredups
export HISTSIZE=1000
 # Add some helpful aliases
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'

啊,看起來好多了! 當(dāng)我們完成修改后,輸入 Ctrl-o 來保存我們修改的 .bashrc 文件,輸入 Ctrl-x 退出 nano。

為什么注釋很重要?

不管什么時(shí)候你修改配置文件時(shí),給你所做的更改加上注釋都是一個(gè)好主意。的確,明天你會(huì) 記得你修改了的內(nèi)容,但是六個(gè)月之后會(huì)怎樣呢?幫自己一個(gè)忙,加上一些注釋吧。當(dāng)你意識(shí) 到這一點(diǎn)后,對你所做的修改做個(gè)日志是個(gè)不錯(cuò)的主意。

Shell 腳本和 bash 啟動(dòng)文件都使用 "#" 符號(hào)來開始注釋。其它配置文件可能使用其它的符號(hào)。 大多數(shù)配置文件都有注釋。把它們作為指南。

你會(huì)經(jīng)??吹脚渲梦募械囊恍┬斜蛔⑨尩?,以此防止它們被受影響的程序使用。這樣做 是為了給讀者在可能的配置選項(xiàng)方面一些建議,或者給出正確的配置語法實(shí)例。例如,Ubuntu 8.04 中的 .bashrc 文件包含這些行:

# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

最后三行是有效的被注釋掉的別名定義。如果你刪除這三行開頭的 "#" 符號(hào),此技術(shù)程稱為 uncommenting (不注釋),這樣你就會(huì)激活這些別名。相反地,如果你在一行的開頭加上 "#" 符號(hào), 你可以注銷掉這一行,但會(huì)保留它所包含的信息。

激活我們的修改

我們對于文件 .bashrc 的修改不會(huì)生效,直到我們關(guān)閉終端會(huì)話,再重新啟動(dòng)一個(gè)新的會(huì)話, 因?yàn)?.bashrc 文件只是在剛開始啟動(dòng)終端會(huì)話時(shí)讀取。然而,我們可以強(qiáng)迫 bash 重新讀取修改過的 .bashrc 文件,使用下面的命令:

[me@linuxbox ~]$ source .bashrc

運(yùn)行上面命令之后,我們就應(yīng)該能夠看到所做修改的效果了。試試其中一個(gè)新的別名:

[me@linuxbox ~]$ ll

總結(jié)

在這一章中,我們學(xué)到了用文本編輯器來編輯配置文件的必要技巧。隨著繼續(xù)學(xué)習(xí),當(dāng)我們 讀到命令的手冊頁時(shí),記錄下命令所支持的環(huán)境變量。可能會(huì)有一個(gè)或兩個(gè)寶貝。在隨后的章節(jié) 里面,我們將會(huì)學(xué)習(xí) shell 函數(shù),一個(gè)很強(qiáng)大的特性,你可以把它包含在 bash 啟動(dòng)文件里面,以此 來添加你自定制的命令寶庫。

拓展閱讀

bash 手冊頁的 INVOCATION 部分非常詳細(xì)地討論了 bash 啟動(dòng)文件。