您的位置:首页 > 其它

关于protoc触发的关于$PATH中路径先后顺序影响的思考

2016-03-16 13:28 351 查看
一、加载顺序:/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行
          并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bash.bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该 
                          文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件. 
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该 
                 该文件被读取1. 图形模式登录时,顺序读取:/etc/profile和~/.profile  
2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc  
3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile  
4. 从其它用户su到该用户,则分两种情况:  
    (1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~/.bash_profile。  
    (2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc  
5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout  
6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。  
7. 上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。  例如:添加静态库和共享库还包括以下方法:
vim /etc/profileexport PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfigexport PATH=$PATH:/usr/local/cuda-7.5/binsource /etc/profile

 应注意,在ubuntu远程界面中登录终端是,只读取/etc/bash.bashrc,而/etc/profile不被读取,而直接远程登录终端,/etc/profile、/etc/bash.bashrc、~/.profile/等都被读取。 

而且,需要加source使其生效(电脑重启后需要):

 即使再次登录依然有效:

 
source /etc/profile

 说明:/etc/profile和/etc/bash.bashrc都被读取了一遍。
 而且,开启另一个终端,原有/etc/profile不起作用,且/etc/profile只能在root才读取。
vim ~/.profilesource ~/.profile



 
source ~/.profile


 
二、PATH路径先后顺序的影响  

 可见,/usr/bin的protoc为2.5版本,而/usr/local/bin的版本为3.0版本远程桌面:

 远程shell,通过在~/.profile中写入以下,否则也是不能获取:
/usr/local/lib/protobuf3.0


 经实践,通过远程shell编译的protobuf文件为3.0版本,不能再远程桌面使用,需要远程桌面2.5版本编译才可。

 

 显然,问题出在$PATH路径上,对于ql,先读取/usr/bin,故为2.5,对于root,先读取/usr/local/bin,故为3.0,这也是为什么远程shell的也为3.0。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: