Linux是一个多用户的时间共享系统,意味着多个用户可以登录并使用系统。 系统管理员可以管理不同用户在安装/更新/删除软件 ,可以运行的程序,可以查看/编辑的文件等方面操作系统的各个方面。
Linux还允许以两种主要方式创建或维护用户环境:使用全系统(全局)和用户特定(个人)配置。 通常,使用Linux系统的基本方法是shell,shell在用户登录成功后初始化时会根据某些文件创建环境。
建议阅读: 如何在Linux中设置环境变量
在本文中,我们将介绍与Linux中本地用户管理的用户配置文件相关的shell初始化文件。 我们将让您知道在哪里保留自定义shell函数,别名,变量以及启动程序。
重要提示 :为了本文的目的,我们将重点介绍bash ,这是一个sh兼容的shell,它是Linux系统上最流行/最常用的shell 。
如果您使用不同的shell(zsh,ash,fish等)程序,请阅读其文档,以了解有关我们将在此处讨论的一些相关文件的更多信息。
Linux中的Shell初始化
当shell被调用时,它会读取某些初始化/启动文件,这有助于为shell本身和系统用户设置一个环境 ; 这是预定义(和定制的)功能,变量,别名等。
shell有两种类型的初始化文件:
- 系统启动文件 - 这些包含适用于系统上所有用户的全局配置,通常位于/ etc目录中。 它们包括: / etc / profiles和/ etc / bashrc或/etc/bash.bashrc 。
- 用户特定的启动文件 - 这些存储配置适用于系统上的单个用户,通常位于用户主目录中作为点文件。 它们可以覆盖系统范围的配置。 它们包括: .profiles , .bash_profile , .bashrc和.bash_login 。
再次,shell可以以三种可能的模式被调用:
交互式登录Shell
在用户成功登录系统后,使用/ bin / login ,在读取存储在/ etc / passwd文件中的凭据之后调用shell。
当shell作为交互式登录shell启动时,它会读取/ etc / profile及其特定于用户的等效的〜/ .bash_profile 。
Linux交互式登录Shell
2.交互式登录Shell
shell在命令行中使用shell程序启动,例如$ / bin / bash或$ / bin / zsh 。 也可以通过运行/ bin / su命令来启动它。
此外,交互式非登录shell也可以使用终端程序(如konsole , 终止符或xterm)从图形环境中调用。
当shell在此状态下启动时,它将复制父shell的环境,并读取用户特定的〜/ .bashrc文件以获取其他启动配置说明。
$ su # ls -la
交互式非登录Shell
3.非交互式Shell
shell运行时调用shell。 在这种模式下,它正在处理脚本(一组shell或通用系统命令/函数),除非另有说明,否则不需要在命令之间进行用户输入。 它使用从父shell继承的环境进行操作。
了解全系统的Shell启动文件
在本节中,我们将更多地介绍用于存储系统上所有用户的配置的shell启动文件,其中包括:
/ etc / profile文件 - 它存储用于登录设置的系统范围的环境配置和启动程序。 要应用于所有系统用户环境的所有配置都应添加到此文件中。
例如,您可以在此处设置全局PATH环境变量。
# cat /etc/profile
系统配置文件
注意 :在像RHEL / CentOS 7这样的某些系统中,您会收到以下警告:“除非您知道您在做什么,否则不建议您更改此文件。 在/etc/profile.d/中创建一个自定义的.sh shell脚本可以对您的环境进行自定义更改,因为这将阻止在将来的更新中合并的需要“。
/etc/profile.d/目录 - 存储用于对您的环境进行自定义更改的shell脚本:
# cd /etc/profile.d/ # ls -l
存储自定义Shell脚本
/ etc / bashrc或/etc/bash.bashrc文件 - 包含系统范围的功能和别名,包括适用于所有系统用户的其他配置。
如果您的系统有多种类型的shell ,那么将bash特定的配置放在此文件中是个好主意。
# cat /etc/bashrc
系统功能和别名
了解用户特定的Shell启动文件
接下来,我们将解释有关用户特定shell(bash)启动点文件的更多信息,该文件存储系统上特定用户的配置,它们位于用户的主目录中,它们包括:
# ls -la
用户特定配置文件
〜/ .bash_profile文件 - 这存储用户特定的环境和启动程序配置。 您可以在此处设置自定义PATH环境变量,如下面的屏幕截图所示:
# cat ~/.bash_profile
用户Bash配置文件
〜/ .bashrc文件 - 此文件存储用户特定的别名和功能。
# cat ~/.bashrc
用户Bashrc文件
〜/ .bash_login文件 - 它包含通常仅在登录系统时执行的特定配置。 当〜/ .bash_profile不存在时,该文件将被bash读取。
〜/ .profile文件 - 在没有〜/ .bash_profile和〜/ .bash_login的情况下读取该文件; 它可以存储相同的配置,也可以由系统上的其他shell访问。 因为我们主要在这里讨论bash,请注意其他shell可能不了解bash语法。
接下来,我们还将解释另外两个重要的用户特定文件,这些文件不一定是bash初始化文件:
〜/ .bash_history文件 - bash维护用户在系统上输入的命令的历史记录 。 该命令列表保存在〜/ .bash_history文件中的用户主目录中。
要查看此列表,请键入:
$ history or $ history | less
查看最后执行的命令
〜/ .bash_logout文件 - 它不用于shell启动,但存储用户特定的注销过程的说明。 当用户从交互式登录shell退出时,它被读取并执行。
一个实际的例子是在注销时清除终端窗口。 这对于远程连接很重要,这将在关闭它们后留下一个干净的窗口:
# cat bash_logout
注销后清除历史记录
有关其他洞察信息,请查看各种Linux发行版上的这些shell初始化文件的内容,并阅读bash手册页:
目前为止就这样了! 在本文中,我们在Linux中解释了shell启动/初始化文件。 使用下面的评论表单写回我们。