ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

bash的四种模式

2022-08-22 18:31:47  阅读:200  来源: 互联网

标签:non shell 模式 bash login interactive 四种 加载


记录下今天在工作遇到的问题。
大致的问题是我以某种方式通过ssh登陆到服务器上执行一些指令,导致指令运行结果不符合预期。
导致问题的根本原因是bash的四种模式,bash在不同的模式下会加载不同的环境变量

1. interactive + login shell

交互式、登陆的shell。交互式指用户一条一条地向shell输入命令,shell输出执行结果。非交互式与之相反。
login shell指打开一个新的shell需要输入用户名和密码。non-login shell与之相反。
该模式下shell首先会加载/etc/profile全局环境变量,然后再按照顺序尝试加载 /.bash_profile、/.bash_login、~/.profile三个用户环境变量,如果有一个加载成功后面的就不再加载。

2. interactive + non-login shell

这种情况通常是,在interactive login shell下打开了一个新的shell。
该模式下shell加载 /bash/bashrc(/bash/bash.bashrc)、~/.bashrc

3. non-interactive + login shell

当使用bash执行shell脚本的时候就属于non-interactive。shell命令有一个参数[--login],如果bash使用[--login]参数执行shell脚本打开一个新的shell就属于这种情况。
该模式加载配置文件与 1 相同。

4. non-interactive + non-login shell

创建这种模式的shell,有两种常见的方法

  1. ssh命令下有一个参数[command],可以通过[--help]查看到。
    例如,ssh user@addr [command],就属于这种模式。

  2. bash *.sh
    该模式会通过BASH_ENV的值去寻找环境变量,BASH_ENV的值就是环境变量的文件名。可以通过设置BASH_ENV的值查找环境变量。

写在最后
参考[https://feihu.me/blog/2014/env-problem-when-ssh-executing-command-on-remote/#加载配置文件]

标签:non,shell,模式,bash,login,interactive,四种,加载
来源: https://www.cnblogs.com/HanYG/p/16613828.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有