交互式shell与非交互式shell
- 交互式shell
shell
等待你的输入,并且执行你提交的命令。
这种模式被称作交互式是因为shell
与用户进行交互。
这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell
也终止了。
- 非交互式shell
在这种模式下,shell
不与你进行交互,而是读取存放在文件中的命令,并且执行它们。
当它读到文件的结尾,shell
也就终止了。
bashrc与profile
bashrc
与profile
都用于保存用户的环境信息。
bashrc
用于交互式non-loginshell
,每次打开新的shell时执行profile
用于交互式login shell
,仅登录时执行
系统中存在许多bashrc
和profile
文件,下面逐一介绍:
/etc/profile
: 此文件为系统的每个用户设置环境信息,当第一个用户登录时,该文件被执行。会引导循环加载/etc/profile.d/*.sh
for i in /etc/profile.d/*.sh ; do if [ -r "$i" ]; then if [ "${-#*i}" != "$-" ]; then . "$i" else . "$i" >/dev/null fi fi done
/etc/bashrc
: 为每一个运行bash shell
的用户执行此文件.当bash shell
被打开时,该文件被读取。会引导循环加载/etc/profile.d/*.sh~/.bash_profile
: 每个用户都可使用该文件输入专用于自己使用的shell
信息,当用户登录时,该文件仅仅执行一次。默认情况下,它设置一些环境变量,然后执行用户的.bashrc
文件
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
~/.bashrc
: 该文件包含专用于某个用户的bash shell
的bash
信息,当该用户登录时以及每次打开新的shell
时,该文件被读取
总结
-
/etc/profile
、/etc/bashrc
设定系统全局环境变量,可以作用于任何用户 -
~/.bash_profile
、~/.bashrc
设定用户目录私有环境变量,继承自全局环境变量。都具备个性化定制功能~/.bash_profile
: 可以设定本用户专有的路径、环境变量等,只能登入的时候执行一次~/.bashrc
:作用同~/.bash_profile
, 每次shell script
的执行都会使用它一次
-
登入系统获得一个shell进程时,读取环境变量步骤:
- 读取全局环境变量/etc/profile,循环加载/etc/profile.d/*.sh
- 根据当前账号读取
~/.bash_profile
,如果读取不了就读取~/.bash_login
,如果读取不了再读取~/.profile
,注意顺序关系 - 根据当前账号读取
~/.bashrc
-
修改profile和bashrc后,需要执行source命令立即生效
-
根据/etc/profile中注释
It's NOT a good idea to change this file unless you know what you are doing. It's much better to create a custom.sh shell script in /etc/profile.d/ to make custom changes to your environment
,不要直接修改/etc/profile文件,在/etc/profile.d目录下添加自定义环境变量 -
执行
env
命令查看环境变量
今天的文章linux环境变量详解_linux查看环境变量命令分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/57927.html