Bash與環境變量

Shell Bash 》》》

瞭解Bash

Linux系統的shell,作爲操作系統的外殼,爲用戶提供使用操作系統的界面。更確切的說,Shell就是Linux內核和用戶相互交流的一個程序。作爲一個命令語言解釋器,用戶在提示符下輸入的命令都先由shell解釋,然後傳入Linux內核,內核會作出相應的反應。

Bash (Bourne Again SHell ) 是Linux下的默認Shell

我們系統上合法的Shell 被寫入到 /etc/shells 這個文件中,比如通過下面命令查看系統中的所有Shell:

vim /etc/shells

在這裏插入圖片描述
而這裏,除了bash 這個熟悉的Shell 外還有其它奇怪的Shell,比如 /sbin/nologin, 那這是爲什麼呢?這是因爲系統某些服務正在運行過程中會去檢查用戶能夠使用的shells,而這些shell 的查詢就是藉助 /etc/shells 這個文件。
舉例來說, 某些FTP網站會去檢查用戶的可用shell。而如果你不想要這些用戶使用FTP以外的主機資源時,可能會給予該用戶一些奇怪的Shell,讓用戶無法以其他服務登錄主機。這個時候,你就得將那些奇奇怪怪的shell 寫進 /etc/shells 這個文件中。

還有,我這個用戶默認會取得哪一個shel呢?我們登錄取得的shell就記錄在**/etc/passwd** 這文件內。我們來看一下文件內容:
在這裏插入圖片描述
如上所示,在每一行的最後一個數據就是你登錄後可以取得的默認的shell。
其中也有一些奇怪的 /sbin/nologin

bash的內置命令和外部命令

有一些命令,比如改變工作目錄的命令 cd 就是包含在內部的。還有一些命令,例如,拷貝 cp ,移動 rm 。是存在於文件系統中某個目錄下的單獨的程序。當然,對用戶而言不必關心一個命令是建立在Shell內部還是一個獨立的程序。

我們可以通過 Shell 內置對象 type 查詢該命令是否爲內置命令。如下圖:
在這裏插入圖片描述
注意:由於利用type找到後面的名稱時,如果後面接的名稱並不能以執行文件的狀態被找到。那麼該名稱是不會被顯示出來的。也就是說,type主要再找出"執行文件",而不是一般文件名,所以,這一點類似which命令。具體可看man幫助。

命令執行之前的換行(\)

範例:如果命令串太長的話,如何使用兩行來輸出?
在這裏插入圖片描述
上面這個命令的用途是將三個文件複製到 /root 這個目錄下而已,不過因爲命令太長,於是用反斜槓 () 來進行轉義,不是開始執行 (enter)。

-----------------------------------------------------------------------

環境變量 》》》

Linux是一個多用戶的操作系統,每個用戶登錄後,都會有一個專門的運行環境。通常,每個用戶默認的環境都是相同的,這個默認的環境實際上就是一組環境變量的值。用戶可以對自己運行環境進行專門的定製,其方法就是修改相應的系統變量的值。通常,在/etc/profile 文件中修改環境變量,在這裏修改的內容是對所用的用戶都起作用的。

env(environment)

env 命令可以列出所有的環境變量。當然,export 也會列出一樣的內容,只不過還有其它額外的功能。
如下圖(具體的環境變量就不)
在這裏插入圖片描述
在這裏插入圖片描述
(具體的環境變量就不一 一解釋了,先說一下PATH這個環境變量,有空再補)

PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zynorl/.local/bin:/home/zynorl/bin

就是執行文件查找的路徑和Windows下配置系統環境類似。目錄與目錄之間以冒號(:)風格。由於文件的查找是依序由path的變量內的目錄來查詢。所以目錄的順序也很重要。

/ etc / profile

系統環境和啓動程序,用於登錄設置。 用戶可以對自己的運行環境進行專門的定製。
當你登錄並且登錄shell是bash時,bash首先執行/etc/profile文件中的命令(如果該文件存在),然後它順序尋找~ /.bash_profile, ~/.bash_login或 ~/.profile文件,
並執行找到的第一個可讀文件中的命令.當登錄bash退出時,它 將執行~/.bash_logout文件中的命令.

查看環境變量:

對於環境變量的查看命令爲"echo $ 變量名" (須加上"$“) 。
例如,要查看當前的BASH版本,過程如下:

echo $BASH_VERSION
4.2.46(2)-release

修改環境變量:

設置環境變量的命令爲"export 變量名" (不可加上 “$”)。
例如, 要設置60s 內沒有任何動作就退出當前 shell, 命令如下:

export TMOUT=60
echo $TMOUT
60
、、、
效果如下(root#-->user~$):
[root@centos07 etc]#  等待輸入超時:自動登出
[zynorl@centos07 ~]$
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章