缘由:
早期学习Linux的时候就对这个问题感兴趣:~/.bashrc和~/.bash_profile以及/etc/profile等文件的作用分别是什么,启动顺序又是怎么样的呢?当时也查了很多资料,但限于当时的知识水平和经验,很多东西都不太懂,只是略微记得而已,今天中午整理了一下自己常用的~/.bashrc配置,又想起了这个问题,觉得有必要把这个问题弄清楚,于是有了下文。
搜索关键字:
- Linux .bashrc .bash_profile
- Linux .bashrc .bash_profile sequence
- Linux 启动 .bashrc bash_profile
参考链接:
- http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_01_02.html
- http://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html
- Execution sequence for .bash_profile, .bashrc, .bash_login, .profile and .bash_logout
参考解答:
交互式登录shell
文件读取顺序:
- /etc/profile
- ~/.bash_profile, ~/.bash_login or ~/.profile: first existing readable file is read
- ~/.bash_logout upon logout
首先读取 /etc/profile,这是对所有用户都有效的配置;然后依次寻找下面三个文件(~/.bash_profile、~/.bash_login、~/.profile),这是针对当前登录用户的配置;但需要注意的是,这三个文件只要有一个存在,就不再读取后面的文件了。比如,要是 ~/.bash_profile 存在,就不会再读取后面两个文件了。而 ~/.bash_logout 是在用户登出系统的时候系统会读取的文件。
交互式非登录shell
A non-login shell means that you did not have to authenticate to the system. For instance, when you open a terminal using an icon, or a menu item, that is a non-login shell.
Files read:
- ~/.bashrc
(~/.bashrc 这个文件通常是由 ~/.bash_profile 引用的)This file is usually referred to in ~/.bash_profile:
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
非交互式
All scripts use non-interactive shells. They are programmed to do certain tasks and cannot be instructed to do other jobs than those for which they are programmed.
Files read:
- defined by BASH_ENV
PATH is not used to search for this file, so if you want to use it, best refer to it by giving the full path and file name.
到这儿,困扰我多时的问题就基本解决了,心里痛快了不少。(在碰到类似问题的时候,应该首先想到的就是查阅官方文档,比如:TLDP和GNU,只要认真查看,肯定能找到准确的答案的)
==
更多参考链接:
- Linux 的启动流程
- Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
- .bash_profile .bashrc profile 文件的作用的执行顺序
- (总结)/etc/rc.d/rc.local 与 /etc/profile .bash_profile .bashrc 文件执行顺序
- Linux中profile、bashrc、bash_profile之间的区别和联系
- =
- The Bash Shell Startup Files
- Bash: about .bashrc, .bash_profile, .profile, /etc/profile, etc/bash.bashrc and others
- linux – .profile vs. .bash_profile vs. .bashrc
- An Explanation of .bashrc and .bash_profile
- bash – Difference between .bashrc and .bash_profile
- unix – Choosing between .bashrc, .profile, .bash_profile, etc
- shell – What’s the difference between .bashrc, .bash_profile, and .environment?
- http://linux.die.net/man/1/bash
=EOF=
《 “Linux中.bashrc和.bash_profile区别” 》 有 3 条评论
以「登录/交互方式」打开的bash都会在启动bash之前加载一些文件:
首先,bash去检查/etc/profile文件是否存在,如果存在就读取并执行这个文件中的命令。
之后,bash再按照以下列出的文件顺序依次查看是否存在这些文件,如果任何一个文件存在,就读取、执行文件中的命令:
~/.bash_profile
~/.bash_login
~/.profile
这里要注意的是,这里只会检查到第一个文件就处理,即使同时存在2个或3个文件,本步骤也只会处理最优先的那个文件,而忽略其他文件。以上两个步骤的检查都可以用`–noprofile`参数进行关闭。
当bash是以login方式登录的时候,在bash退出时(exit),会额外读取并执行~/.bash_logout文件中的命令。
当bash是以交互方式登录时(-i参数),bash会读取并执行~/.bashrc中的命令。`–norc`参数可以关闭这个功能,另外还可以通过`–rcfile`参数指定一个文件替代默认的~/.bashrc文件。
.bash_profile .bash_rc 什么区别
https://segmentfault.com/q/1010000000133177
https://gist.github.com/yegle/1564928
如何在 Linux 上让一段时间不活动的用户自动登出 | Linux 中国
https://mp.weixin.qq.com/s/EeXZu2DGADg1HnTpfmWH4g
https://www.ostechnix.com/auto-logout-inactive-users-period-time-linux/
`
◈ 方法 1:
# 编辑 ~/.bashrc 或 ~/.bash_profile ,增加一行:
TMOUT=100
◈ 方法 2:
以 root 用户登录,创建一个内容如下的文件:
# vi /etc/profile.d/autologout.sh
TMOUT=100
readonly TMOUT
export TMOUT
# chmod +x /etc/profile.d/autologout.sh
◈ 方法 3 (只适用于 SSH 会话):
$ sudo vi /etc/ssh/sshd_config
ClientAliveInterval 100
ClientAliveCountMax 0
$ sudo systemctl restart sshd
`