環境變量


title: 環境變量
date: 2019-06-09 09:18:24
tags:
- Linux
categories:
- Linux

話說上一回……我配置了環境變量用code .打開vscode,好吧後來我發現只有當時生效,但是重啓terminal 後就又不能了,得重新執行source ~/.bash_profile,才能再用code命令。

這是爲什麼呢?(蔡明腔)好吧不搞清這裏不行了,直接翻開鳥哥私房菜……打開了linux.cn……

查看環境變量

[parallels@centos-7 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/home/parallels/bin:/usr/local/sbin:/usr/sbin

每兩個目錄之間使用冒號 : 分隔。

修改環境變量

# $HOME 是當前用戶的家目錄,可以使用 echo $HOME 查看
PATH=$PATH:$HOME/bin

上面這個操作只會在當前的 shell 生效,當前的 shell 一旦關閉,環境變量的值就又恢復原狀了。

如果要讓變更對當前用戶持續生效,就不能在 shell 中直接執行上面的命令,而是應該將變更操作寫在每次啓動 shell 時都會運行的文件當中。

之前配置vim 有一個vimrc ,配置環境變量有.bashrc 。Linux 裏面是 .bashrc 而 Mac 是 .bash_profile。

[parallels@centos-7 ~]$ ls -al
total 43000
drwx------. 21 parallels parallels     4096 Jun  9 09:15 .
drwxr-xr-x.  3 root      root            23 Aug 10  2017 ..
-rw-------.  1 parallels parallels     9038 Jun  6 10:46 .bash_history
-rw-r--r--.  1 parallels parallels       18 Aug  3  2016 .bash_logout
-rw-r--r--.  1 parallels parallels      193 Aug  3  2016 .bash_profile
-rw-r--r--.  1 parallels parallels      445 May 26 18:00 .bashrc # 就是它了 #
drwx------. 15 parallels parallels     4096 Jun  7 12:47 .cache
drwxr-xr-x.  3 parallels parallels       46 May  8 20:13 .cgdb
drwxr-xr-x. 19 parallels parallels     4096 Jun  9 09:14 .config
lrwxrwxrwx.  1 parallels parallels       54 May  1 20:48 .cquery -> /home/parallels/.VimForCpp/cquery/config/cquery.config
drwxr-xr-x.  2 parallels parallels       72 Jun  7 12:47 Desktop
-rw-------.  1 parallels parallels       16 Aug 10  2017 .esd_auth
-rw-r--r--.  1 parallels parallels 43854935 Jun  7 00:29 game-0.0.1-SNAPSHOT.jar
-rw-r--r--.  1 parallels parallels    26101 Jun  7 00:26 game.sql

更改.bashrc 讓環境變量更持久

vim .bashrc
# shift + g 調到文件末尾,o 跳到下一行並進入插入狀態
export PATH=$PATH:$HOME/bin
# esc : wq
source .bashrc # 刷新一下才能生效(或者重啓)

vim多多練習呀,感覺好好用。

環境變量的加載順序

Mac:

/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc

Linux:

https://www.cnblogs.com/python2687806834/p/9848139.html

當你進入系統的時候,Linux 就會爲你讀入系統的環境變量,Linux 中有很多記載環境變量的文件,它們被系統讀入是按照一定的順序的。

  1. /etc/profile

此文件爲系統的環境變量,它爲每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。並從/etc/profile.d 目錄的配置文件中搜集shell 的設置。這個文件,是任何用戶登陸操作系統以後都會讀取的文件(如果用戶的shell 是csh 、tcsh 、zsh ,則不會讀取此文件),用於獲取系統的環境變量,只在登陸的時候讀取一次。 (假設用戶使用的是BASH )

  1. /etc/bashrc

在執行完/etc/profile 內容之後,如果用戶的SHELL 運行的是bash ,那麼接着就會執行此文件。另外,當每次一個新的bash shell 被打開時, 該文件被讀取。每個使用bash 的用戶在登陸以後執行完/etc/profile 中內容以後都會執行此文件,在新開一個bash 的時候也會執行此文件。因此,如果你想讓每個使用bash 的用戶每新開一個bash 和每次登陸都執行某些操作,或者給他們定義一些新的環境變量,就可以在這個裏面設置。

  1. ~/.bash_profile

每個用戶都可使用該文件輸入專用於自己使用的shell 信息。當用戶登錄時,該文件僅僅執行一次,默認情況下,它設置一些環境變量,執行用戶的.bashrc 文件。單個用戶此文件的修改只會影響到他以後的每一次登陸系統。因此,可以在這裏設置單個用戶的特殊的環境變量或者特殊的操作,那麼它在每次登陸的時候都會去獲取這些新的環境變量或者做某些特殊的操作,但是僅僅在登陸時。

  1. ~/.bashrc

該文件包含專用於單個人的bash shell 的bash 信息,當登錄時以及每次打開一個新的shell 時, 該該文件被讀取。單個用戶此文件的修改會影響到他以後的每一次登陸系統和每一次新開一個bash 。因此,可以在這裏設置單個用戶的特殊的環境變量或者特殊的操作,那麼每次它新登陸系統或者新開一個bash ,都會去獲取相應的特殊的環境變量和特殊操作。

  1. ~/.bash_logout

當每次退出系統( 退出bash shell) 時, 執行該文件。

用戶登錄後加載profile和bashrc的流程如下:

1)/etc/profile-------->/etc/profile.d/*.sh

2)HOME/.bashprofile>HOME/.bash_profile-------->HOME/.bashrc---------->/etc/bashrc

bash首先執行/etc/profile腳本,/etc/profile腳本先依次執行/etc/profile.d/*.sh

隨後bash會執行用戶主目錄下的.bash_profile腳本,.bash_profile腳本會執行用戶主目錄下的.bashrc腳本,

而.bashrc腳本會執行/etc/bashrc腳本

至此,所有的環境變量和初始化設定都已經加載完成.

bash隨後調用terminfo和inputrc,完成終端屬性和鍵盤映射的設定.


筆記就先到這裏,下來我試試能不能讓我不再每次啓動terminal 都刷新纔可以用code .

好了,現在闊以啦。


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