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

来源:互联网 发布:吉利知豆电动车怎么样 编辑:程序博客网 时间:2024/06/05 16:29
一、加载顺序:
/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/profile

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PATH=$PATH:/usr/local/cuda-7.5/bin

source /etc/profile

菜鸟跑通doppia(三) - 小影不爱睡 - 影 的博客
 应注意,在ubuntu远程界面中登录终端是,只读取/etc/bash.bashrc,而/etc/profile不被读取,而直接远程登录终端,/etc/profile、/etc/bash.bashrc、~/.profile/等都被读取。
 菜鸟跑通doppia(三) - 小影不爱睡 - 影 的博客
而且,需要加source使其生效(电脑重启后需要):
关于protoc触发的关于¥PATH中路径先后顺序影响的思考 - 小影 - 影 的博客
 即使再次登录依然有效:
菜鸟跑通doppia(三) - 小影不爱睡 - 影 的博客
 

source /etc/profile

菜鸟跑通doppia(三) - 小影不爱睡 - 影 的博客
 说明:/etc/profile和/etc/bash.bashrc都被读取了一遍。
 而且,开启另一个终端,原有/etc/profile不起作用,且/etc/profile只能在root才读取。

vim ~/.profile

source ~/.profile

菜鸟跑通doppia(三) - 小影不爱睡 - 影 的博客
菜鸟跑通doppia(三) - 小影不爱睡 - 影 的博客
 

source ~/.profile


菜鸟跑通doppia(三) - 小影不爱睡 - 影 的博客
 
二、PATH路径先后顺序的影响
  关于protoc触发的关于¥PATH中路径先后顺序影响的思考 - 小影 - 影 的博客
 
可见,/usr/bin的protoc为2.5版本,而/usr/local/bin的版本为3.0版本
远程桌面:
关于protoc触发的关于¥PATH中路径先后顺序影响的思考 - 小影 - 影 的博客
 远程shell,通过在~/.profile中写入以下,否则也是不能获取:

/usr/local/lib/protobuf3.0


关于protoc触发的关于¥PATH中路径先后顺序影响的思考 - 小影 - 影 的博客
 经实践,通过远程shell编译的protobuf文件为3.0版本,不能再远程桌面使用,需要远程桌面2.5版本编译才可。
关于protoc触发的关于¥PATH中路径先后顺序影响的思考 - 小影 - 影 的博客
 
关于protoc触发的关于¥PATH中路径先后顺序影响的思考 - 小影 - 影 的博客
 显然,问题出在$PATH路径上,对于ql,先读取/usr/bin,故为2.5,对于root,先读取/usr/local/bin,故为3.0,这也是为什么远程shell的也为3.0。
关于protoc触发的关于¥PATH中路径先后顺序影响的思考 - 小影 - 影 的博客
 
0 0
原创粉丝点击