Ubuntu系统变量管理
- 常用系统变量
echo $SHELL 查看当前所使用的SHELL
echo $PATH 查看当前所用的环境变量
echo $HOME 查看当前家目录所在
env 查看/操作所 有系统变量
-i:开始一个新的空的环境;
-u<变量名>:从当前环境中删除指定的变量。
- 注释
这些是我在工作中遇到的问题, 经过多方百度.大概了解到的内容.结果都是亲测过得.
切记,一旦安装了第三方的如: zsh的SHELL之后,~/.bashrc和~/.bash_profile就不生效了
需要再~/.zshrc中source一下这两个
以下为例:
摘自: Ubuntu16.04的.profile文件
PATH="$HOME/bin:$HOME/.local/bin:$PATH:$HOME/"
家目录下文件:
liuhao.sh内容
echo "I'm liuhao";
设置系统变量时, 其实理论上和window概念有一比, 都是将路径指向目录即可,而非具体的文件.
如window下XAMPP的MYSQL添加系统变量:
C:\XAMPP\MYSQL\bin
只到目录, 而非具体到该文件.
此处设置时, 如果是在既定的写有系统变量的文件中添加.
如:
$HOME/.profile中已有
PATH="$HOME/bin:$HOME/.local/bin:$PATH/"
这时候, 我们只要在后面加一个:续写即可.
此处的$PATH 应该是将所有系统变量都续写进来的意思.
若不想在已有系统变量的文件中写,或文件中没有.
可以手动填写.多个系统变量使用:英文冒号隔开.同时别忘了追加$PATH或者在$PATH后追加
export PATH="$PATH:XXXX:XXX:XX"
期初我认为:不加export导出的话, 在系统中不能直接echo $PATH.但是Ubuntu16.04测试中,发现没有关系.
在命令行中和自定义shell脚本中设置系统环境变量的话, 是必须要用的.
其实我在Ubuntu16.04的虚拟机当中并没有export导出,也没有问题, 百度很多案例也是没有.
但是在平时的书写当中, 还是要加一下. 防止某些Linux发行版不兼容问题.
书上说export是将自定义变量变成系统环 境变量
注意:
我们是在追加PATH环境变量,所以我们不能只用 =赋值, 表达式中存在的:$PATH 就是在拼接文件
在修改之后 我们需要重启终端或者重启系统才能完成修改
如果修改成功 那么我们通过在命令行中输入
echo $PATH
便能看到修改结果
来自百度Linux公社
- 简要说明
•/etc/profile —— 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置;
•/etc/environment —— 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量;
•/etc/bashrc —— 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取;
•~/.profile —— 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的.bashrc文件;
•~/.bashrc —— 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取;
最后,如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了。
- 详细说明
UbuntuLinux系统环境变量配置文件
Ubuntu Linux系统环境变量配置文件分为两种:系统级文件和用户级文件,下面详细介绍环境变量的配置文件。
1.系统级文件:
/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。这个文件一般就是调用/etc/bash.bashrc文件。
/etc/bash.bashrc:系统级的bashrc文件,为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
/etc/environment: 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。
2.用户级文件:
~/.profile: 在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率 上讲不好。
~/.bash_profile:每个用户都可使用该文件输入专用于自己 使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
~./bash_login:不推荐使用这个,这些不会影响图形界面。而且.bash_profile优先级比bash_login高。当它们存在时,登录shell启动时会读取它们。
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
~/.pam_environment:用户级的环境变量设置文件。
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。
- 配置案例
三、设置环境变量的方法
由以上分析可知:
/etc/profile全局的,随系统启动设置【设置这个文件是一劳永逸的办法】
/root/.profile和/home/myname/.profile只对当前窗口有效。
/root/.bashrc和 /home/yourname/.bashrc随系统启动,设置用户的环境变量【平时设置这个文件就可以了】
那么要配置Ubuntu的环境变量,就是在这几个配置文件中找一个合适的文件进行操作了;如想将一个路径加入到$PATH中,可以由下面这样几种添加方法:
1.控制台中:
$PATH="$PATH:/my_new_path" (关闭shell,会还原PATH)
2.修改profile文件:
$sudo gedit /etc/profile
在里面加入:
export PATH="$PATH:/my_new_path"
3.修改.bashrc文件:
$ sudo gedit /root/.bashrc
在里面加入:
export PATH="$PATH:/my_new_path"
后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:
$ echo $PATH
输出已经是新路径了。
举个列子,如果想把当前路径加入到环境变量中去,就可以这样做:
$ PATH ="$PATH:."
这样运行自己编写的shell脚本时就可以不输入./了