linux shell对应的配置文件是怎么被执行的呢?-----聊聊/etc/profile, ~/.bash_profile, ~/.bashrc等配置文件的执行流程

版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权。 https://blog.csdn.net/stpeace/article/details/50092013

       本文来聊聊linux中的/etc/profile, ~/.bash_profile, ~/.bashrc等配置文件。首先, 我们来说一下login shell和non-login shell的概念:

       login shell : 需要密码来登录的, 则为login shell, 比如你每次用SecureCRT来登录的shell。 要说明的是, SecureCRT可以存放密码, 所以即使你省略了输入这个输入密码的过程, 那还是login shell. 或者你在SecureCRT中clone一个session, 那也属于login shell, 因为间接用到了密码来登录(存储了)。

       non-login shell: 不需要密码登录的shell, 比如你已经在一个shell当中, 执行bash命令(不需要密码)后, 进入到另外一个shell(子shell)中, 此时的shell就是non-login shell.


       本文只讨论常见的login shell. 对于/etc/profile来说, 通常需要root权限才能修改它, 修改后, 其他任意用户再打开shell的时, 都会生效。 所以,改/etc/profile的时候必须仔细斟酌, 小心为妙, 因为会影响到该机器上的所有用户。

       那每个用户可不可以有自己的个性化配置文件呢? 可以的! 比如我经常在~/.bashrc中增加和修改东西, 这个修改只影响我自己(~/.bash_profile也同理)。

       对于 /etc/profile, ~/.bash_profile, ~/.bashrc等, 在我们登录login shell的时候, 都会被自动执行, 爽哈。


       那还有其他的一些配置文件啊, 究竟是怎样的关系呢? 我们给出一幅图, 如下:

   /etc/profile-------------------->~/.bash_profile---------------->bash操作
                 |                                        |
                 |                                        |
                 |- - ->/etc/inputrc                 |- - ->~/.bashrc
                 |                                                      |

                 |                                                      |
                 |- - ->/etc/profile.d/*.sh <- - -  - - - /etc/bashrc
                                    |

                                                            |
                         /etc/sysconfig/i18n


     如上, 红线是主线, 虚线是“被调用”线。 大多数情况下, 只需要对这个图有大致的了解并用熟/etc/profile, ~/.bash_profile, ~/.bashrc即可。

     OK,  就这样。



没有更多推荐了,返回首页