shell的環境變數
bash是bourne shell的gnu擴充套件,除了繼承了sh的所有特點以外,還增加了很多特性和功能。由login啟動的bash是作為乙個登入shell啟動的,它繼承了getty設定的term、path等環境變數,其中path對於普通使用者為"/bin:/usr/bin:/usr/local/bin",
對於root使用者為"/sbin:/bin:/usr/sbin:/usr/bin"。
bash作為登入shell,它將首先尋找/etc/profile指令碼檔案,並執行它;
然後如果存在~/.bash_profile,則執行它,否則執行 ~/.bash_login,如果該檔案也不存在,則執行~/.profile檔案。然後bash將作為乙個互動式shell執行~/.bashrc檔案(如果存在的話),很多系統中,~/.bashrc都將啟動/etc/bashrc作為系統範圍內的配置檔案。
系統登入時,會檢查的文件:
1. /etc/profile:首先,系統會檢查這個檔案,以定義如下這些變數:path、user、logname、mail、hostname、histsize、inputrc。還指定了 umask 和 ulimit 的設定,ulimit是用來限制乙個 shell 能建立的程序數量,以避免系統資源被無限制的消耗。最後,它還會檢查並執行 /etc/profile.d/*.sh 那些 script,有興趣的話可以追蹤看看。
2. ~/.bash_profile:定義 username、bash_env、path。其中的 path 除了現有的 $path 之外,還會再加入使用者相關的路徑,你會發現 root 和普通帳號的路徑是不一樣的;而 bash_env 呢,仔細點看,是下乙個要檢查的文件:
3. ~/.bashrc: 首先是alias (別名)設定。然後有一行:. /etc/bashrc 。在 shell script 中,用乙個小數點後跟乙個空格再指向另外乙個 script,意思是同時執行那個 script 並採用那裡的變數設定。
4. /etc/bashrc:基本上,這裡的設定,是所有使用者在獲得 shell 的時候都會採用的。這裡指定了一些 terminal 設定,以及 shell 提示字元等等。
5. ~/.bash_login:如果 ~/.bash_profile 不存在,則使用這個文件。
6. ~/.profile:如果 ~/.bash_profile 和 ~/.bash_login 都不存在,則使用這個文件。
7. ~/.bash_logout:這個文件通常只有乙個命令:clear,也就是把螢幕顯示的內容清掉。如果要在登出 shell 的時候,執行一些動作,例如:清空臨時文件(假如你使用了臨時文件)、還原某些設定、或是執行某些備份之類的。
你可以通過修改上面這些檔案,來調整你進入shell後的變數值。一般使用者可以修改其家目錄( ~/ )中的檔案,以進行個人化的設定;而作為 root,你可以修改 /etc/下面的檔案,設定大家共用的變數值。至於 bash 的變數值如何設定?有哪些變數?各變數的功能如何?你可以執行 man bash 參考手冊資料。
一旦修改了 /etc/profile 或 ~/.bash_profile 檔案,其新設定要在下次登入的時候才生效。如果你不想退出,又想使用新設定,那可以用 source 命令來抓取:source ~/.bash_profile
不同的shell設定環境變數也不相同。舉個例子, 在如tcsh 和 csh這樣的c-style shell, 您必須使用setenv去設定環境變數。 而在如sh和bash這樣的bourne shell, 您必須使用export去設定當前環境變數。
舉個例子,要去設定或改變editor環境變數, 在csh或tcsh下將editor設為 /usr/local/bin/emacs:
需要: % setenv editor /usr/local/bin/emacs
而在bourne shell下,則是:
% export editor="/usr/local/bin/emacs
shell的系統變數shell常用的系統變數並不多,但卻十分有用,特別是在做一些引數檢測的時候。下面是shell常用的系統變數
表示方法 描述
$n $1 表示第乙個引數,$2 表示第二個引數 ...
$# 命令列引數的個數
$0 當前程式的名稱
$? 前乙個命令或函式的返回碼
$* 以"引數1 引數2 ... " 形式儲存所有引數
$@ 以"引數1" "引數2" ... 形式儲存所有引數
$$ 本程式的(程序id號)pid
$! 上乙個命令的pid
Linux SHELL,環境變數
shell 在電腦科學中,shell俗稱殼 用來區別於核 是指 提供使用者使用介面 的軟體 命令解析器 它類似於dos下的command和後來的cmd.exe。它接收使用者命令,然後呼叫相應的應用程式。同時它又是一種程式語言。作為命令語言,它互動式解釋和執行使用者輸入的命令或者自動地解釋和執行預先設...
linux shell獲取環境變數運算
很多shell運算需要獲取環境變數,例如a b,其中a或者b可能都來自於環境變數。但是環境變數可能出現不存在的情況,這時運算就會出錯。所以在計算前需要判斷其是否存在 z test 更複雜的 input 1 test mode 2 if z test mode then ret 1 elif test...
Linux Shell 環境變數配置檔案
研究學習 linux shell 的系列文章.這篇文章主要以 centos 為例講環境變數的配置檔案.變數型別 環境變數在命令列中修改只能臨時生效,把它寫入配置檔案才能永久生效.path histsize ps1 hostname 等環境變數寫入對應的環境配置檔案,在登陸 shell 時自動載入生效...