首页 > 系统管理 > Bash 登录模式
2015
05-17

Bash 登录模式

前言

   在批量管理服务器的时候,其中有2台服务器,远程执行java命令没有返回任何信息,但是登录服务器之后执行java命令没有问题,这是为什么呢,下面我们分析一下!

问题如图所示

1、本地执行,环境变量输出没有问题

blob.png

2、用最简单的ssh远程调用,我们看到明显少了jdk的命令

blob.png

出于这个问题,我们对Bash环境变量配置文件做一个分析


一、Bash登录模式

1、login Shell:登录服务器,通过输入用户名密码登录,此时取得的bash就称为login Shell

2、交互式非登录shell:就是我们远程操作服务器并没有登录。例如通过ssh root@ip ‘echo $PAHT’这样的方式。

这二者在取得Bash的情况中,读取的配置文件不一样,由此也就找到了我们上面的问题的原因。

login shell只会读取以下这两个配置文件

1、系统配置文件,也就是我们最喜欢修改的文件

  • /etc/profile

2、个人用户配置文件,只是对当前用户有效,对其他用户无效

  • .bash_profile 

  • .bash_login  

  • .profile 

login Shell读取的顺序也是按照上面的顺序,先系统配置文件在用户配置文件,但是用户配置文件只是读取一个文件,读取顺序也是按照上面的顺序读取,也就是说如果.bash_profile 存在,其他两个文件无论存在与否都不会被读取。

交互式非登录shell读取文件

  • .bashrc

到这里我们的问题答案已经出来了,我们需要修改.bashrc这个文件,增加jdk的环境变量。

最后我们看一下交互式非登录shell和login shell的流程图,方便大家更好的理解

1.png

总结

   这里我们主要说明的是bash中的login shell 和交互式非登录shell的登录流程,至于配置文件中是什么,有兴趣的大家自己看看,有什么问题可以留言




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复