--- tags: Linux --- # Linux 環境變數 ## 環境變數其實共有兩種變數 - environmental variables - shell variables - 變數都是key-value pair的string ## 環境變數存在範圍 - environmental variables是全域的。在目前的shell跟所有子sell中都存在。當使用者登入時,系統會給使用者一個shell來用,並分一塊記憶體來儲存environmental variables,接下來產生的子shell都會繼承這塊記憶體的內容。但子shell創造出來的environmental variables並不會存在於父shell中,此記憶體的繼承是單向的。 - shell variables是區域的。只存在於目前的shell。 ## 讀取與儲存 - shell variables - 讀取: set (不加任何arguments) - 新增:直接key-value pair,ex: TEST=thisistest - 修改:同新增 - 刪除:unset 加變數key,ex: unset TEST ## 讀取與儲存 - environmental variables - 讀取: env (不加任何arguments) - 新增:export 加上 key-value pair,ex: export TEST=thisistest - 修改:同新增 - 刪除:unset 加變數key,ex: unset TEST ## 永久儲存 - evnironmental variables - CentOS8是將變數設定寫在~/.bashrc檔案中,每次登入時這個檔案就會被讀取(https://unix.stackexchange.com/a/21600) - Ubuntu可以用CentOS8的方法,也可以將變數設定寫在~/.profile檔案中(https://askubuntu.com/questions/60218/how-to-add-a-directory-to-the-path)。我是選擇用跟CentOS8一樣的方式,成功了。 ## P.S. - 讀取與儲存的方法不唯一,set其實是兩者都可以讀取與刪除,此外還有printenv、set加上arguments、env加上arguments等方法,我這邊只記錄其中一種CRUD方法。 ## /home/burwei/.bachrc ``` # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific environment PATH="$HOME/.local/bin:$HOME/bin:$PATH" export PATH REACT_APP_DOMAIN=burweiofficial.ddns.net export REACT_APP_DOMAIN # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions ```