linux 配置文件 失效,source etc/profile重新ssh上去失效

本篇博客主要探讨了一下Linux配置环境变量执行顺序问题。

linux环境配置文件

linux环境变量配置的文件有一下几种/etc/environment

/etc/profile

/etc/bashrc(在Ubuntu中文件名为bash.bashrc)

~/.profile

~/.bashrc

linux配置文件执行顺序

/etc/environment文件是整个系统的环境变量配置,最先执行的,之后是/etc/profile执行,/etc/profile脚本里面有一个逻辑是如果/etc/bashrc(Ubuntu是bash.bashrc)文件存在,则执行此文件。然后执行用户目录下的.profile文件,这个文件有一个逻辑是如果~/.bashrc存在,则执行此文件。

今天服务器配置java环境变量的时候,在/etc/environment执行完之后reboot之后java -version有用,退出shell之后重新登录无效,遂改在了/etc/profile文件中,然而依旧是重启第一次有效,退出shell之后重新登录依然无效。后查阅资料发现要在~/.bashrc文件下执行以下source /etc/profile才会生效,于我依然无效。

最后我纳闷了,按理说/etc/environment和/etc/profile文件应该配置之后启动就会生效的,为何我退出重新进入shell就无效了呢?而且我发现,我用shell登录到服务器的时候,/etc/profile文件和~/.bashrc的echo输出语句无效,并没有执行输出。

经过多方资料的查阅之后了解到一下两种模式:su这种登录情况会执行/etc/profile文件和~/.profile文件

直接通过终端ssh上去则只会执行/etc/bashrc和~/.bashrc文件

我用的是zsh,所以ssh上去不执行~/.bashrc而是执行~/.zshrc

第二点和第三点其实算是一点,因为ssh上去的只会执行当然脚本当前使用的shell配置文件,因为我使用的是zsh,所以执行的是~/.zshrc而不是~/.bashrc。当然,这是我测试出来的,你要问我严谨不,那肯定不严谨。但是我在两个文件分别echo输出文字,只有~/.zshrc文件输出了,所以我就暂且这么猜了。

因此,环境变量我配置在/etc/profile文件下,只要在~/.zshrc(或者使用用bash的在~/.bashrc文件中)里面加一个判断就能解决ssh登录不加载/etc/profile的问题了1

2

3if [ -d /etc/profile ]; then

source /etc/profile

fi

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值