原创 Linux学习(17)

2015-4-15 20:41 876 12 12 分类: 软件与OS 文集: Linux

Linux的外部命令是通过环境变量 PATH 的值来查找的,比如输入  ls 命令,系统通过 PATH 指向的路径搜索名为 ls 的二进制可执行文件。

用户登录时,从四个文件中读取环境设置

 

全局设置文件:

  /etc/profile

  /etc/bashrc

用户设置文件

  用户家目录/.bashrc

  用户家目录/.bash_profile

 

用户登录shell时运行文件顺序

  /etc/profile

  /etc/profile.d/*.sh

  用户家目录/.bash_profile

  用户家目录/.bashrc

  /etc/bashrc

 

非登录shell运行顺序  ,比如由root用户转向 su jack 时 

  用户家目录/.bashrc

  /etc/bashrc

 

su - jack  等同于重新登录shell

 

 /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 

另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.

例子如下:

2222.jpg
 
用户家目录  /home/pcc/.bashrc 中定义了用户pcc的环境变量PATH ;
以root登录时,没有执行 /home/pcc/.bashrc ,所以echo $PATH 看到的PATH值只是全局的,对所用用户都适用;
此时输入 vcs dve 等命令是无效的;
当切换到用户pcc时,执行了/home/pcc/.bashrc  文件,此时echo $PATH 看到的既有全局的(继承了父层的环境变量),也有pcc用户新添加的值(指向vcs软件位置)。
这时输入 vcs  dve等命令都可以执行。。
 
 
关于PATH的作用:
PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令,而PATH的值恰恰就是/bin:/sbin:/usr/bin:……。其中的冒号使目录与目录之间隔开。 
关于新增自定义路径:
现在假设你新安装了一个命令在/usr/locar/new/bin下面,而你又想像ls一样在任何地方都使用这个命令,你就需要修改环境变量PATH了,准确的说就是给PATH增加一个值/usr/locar/new/bin。你只需要一行bash命令export PATH=$PATH:/usr/locar/new/bin。这条命令的意思太清楚不过了,使PATH自增:/usr/locar/new/bin,既
PATH=PATH+":/usr/locar/new/bin";通常的做法是把这行bash命令写到/root/.bashrc的末尾,然后当你重新登陆LINUX的时候(应该是linux启动时就会执行这个文件),新的默认路径就添加进去了。当然这里你直接用source /root/.bashrc执行这个文件重新登陆了。你可以用echo $PATH命令查看PATH的值。

文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条