话说上一回……我配置了环境变量用code .打开vscode,好吧后来我发现只有当时生效,但是重启terminal 后就又不能了,得重新执行source ~/.bash_profile,才能再用code命令。

这是为什么呢?(蔡明腔)好吧不搞清这里不行了,直接翻开鸟哥私房菜……打开了linux.cn……

查看环境变量

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

每两个目录之间使用冒号 : 分隔。

修改环境变量

1
2
# $HOME 是当前用户的家目录,可以使用 echo $HOME 查看
PATH=$PATH:$HOME/bin

上面这个操作只会在当前的 shell 生效,当前的 shell 一旦关闭,环境变量的值就又恢复原状了。

如果要让变更对当前用户持续生效,就不能在 shell 中直接执行上面的命令,而是应该将变更操作写在每次启动 shell 时都会运行的文件当中。

之前配置vim 有一个vimrc ,配置环境变量有.bashrc 。Linux 里面是 .bashrc 而 Mac 是 .bash_profile。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[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 让环境变量更持久

1
2
3
4
5
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/.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 .

好了,现在阔以啦。