操作系統:Linux環境變量相關知識總結


Linux是一個多用戶的操作系統。多用戶意味着每個用戶登錄系統後,都有自己專用的運行環境。而這個環境是由一組變量所定義,這組變量被稱爲環境變量。用戶可以對自己的環境變量進行修改以達到對環境的要求。

設置環境變量的方法

  • 對所有用戶生效的永久性變量

這類變量對系統內的所有用戶都生效,所有用戶都可以使用這類變量。作用範圍是整個系統。

此文件只在root下才能修改。

# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib

添加完成後新的環境變量不會立即生效,立即生效需要運行 source /etc/profile ,否則只能在下次重進此用戶時才能生效。

  • 對單一用戶生效的永久性變量

在用戶目錄下的.bash_profile 文件中添加變量,該文件是隱藏文件,可使用ll -a查看:

$ whoami 
rethink

$ vi /home/rethink/.bash_profile
export CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib 

source /home/rethink/.bash_profile

在上圖中用紅框框住了兩個文件:.bashrc 和.bash_profile ,原則上講設置此類環境變量時在這兩個文件任意一個裏面添加都是可以的,這兩個文件的區別爲:.bash_profile是交互式login方式進入bash shell運行,.bashrc是交互式non-login方式進入bash shell運行。

可以理解爲.bash_profile文件只會在用戶登錄的時候讀取一次,而.bashrc在每次打開終端進行一次新的會話時都會讀取。

臨時有效的環境變量(只針對當前shell有效)

此類環境變量只對當前的shell有效。當我們退出登錄或者關閉終端再重新打開時,這個環境變量就會消失。是臨時的。

設置方法:命令行下直接使用[export 變量名=變量值] 定義變量。

export NAME="rethink"
echo $NAME
rethink

設置環境變量常用命令

  • echo 用於打印顯示環境變量,如:echo $NAME;

  • export 用於設置新的環境變量,如:export NAME='rethink';

更新環境變量 更新環境變量直接重新賦值即可:NAME='test'   (注意:變量名前不需要加$);

  • env 顯示當前用戶的變量;

  • set 顯示當前shell變量,shell變量包含用戶變量;

  • unset 刪除一個環境變量,如:unset NAME;

  • readonly 設置環境變量只讀,如:readonly NAME  ,只讀變量unset無效。

常用環境變量

PATH
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

路徑之間用冒號分隔,這些路徑都是一些可以找到可執行程序的目錄列表。當我們輸入一個指令時,shell會先檢查命令是否是系統內部命令,如果不是則會再去檢查此命令是否是一個應用程序,shell會試着從PATH中尋找這些應用程序。

如果shell在這些路徑目錄裏沒有找到可執行文件,就會報錯;若找到,系統將調用執行應用程序。通過設置PATH ,可以讓我們運行程序或指令更加方便。

將某個目錄路徑加入到PATH中,可以這樣寫:

pwd
/root/docker/httpd
export PATH=$PATH:$PWD
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/docker/httpd
`可以看到在PATH後面已經加上了我們當前所處目錄的路徑`
  • HOME

用戶的主工作目錄,即爲用戶登錄到Linux系統中時的默認目錄。

$ whoami
rethink
echo $HOME
/home/rethink
  • HISTSIZE

保存歷史命令的條數。我們輸入的指令都會被系統保存下來,這個環境變量記錄的就是保持指令的條數。一般爲1000。

echo $HISTSIZE
1000
$ HISTSIZE=1001
echo $HISTSIZE
1001

歷史命令是被保存在內存中的,當退出或者登錄shell時,會自動保存或讀取我們可以通過history命令來查看。可以使用符號 ! 執行指定序號的歷史命令。例如,要執行第2個歷史命令,則輸入!2。

history 5
   59  ls
   60  who
   61  history | head -n 5
   62  who am i
   63  history 5
$ !62
who am i
root     pts/0        2018-04-04 11:00 (101.81.92.18)
  • LOGNAME

當前用戶登錄名。

echo $LOGNAME
rethink
  • HOSTNAME 主機名稱。
echo $HOSTNAME
JDu4e00u53f7
  • SHELL

當前用戶使用的shell種類。

echo $SHELL
/bin/bash


IT技術分享社區


個人博客網站:https://programmerblog.xyz


文章推薦 程序員效率:畫流程圖常用的工具 程序員效率:整理常用的在線筆記軟件 遠程辦公:常用的遠程協助軟件,你都知道嗎? 51單片機程序下載、ISP及串口基礎知識 硬件:斷路器、接觸器、繼電器基礎知識





本文分享自微信公衆號 - IT技術分享社區(gh_a27c0758eb03)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章