“每个交互式 shell”是什么意思?

“每个交互式 shell”是什么意思?

通过输入man bash,我们可以看到

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bashrc
              The systemwide per-interactive-shell startup file
       /etc/bash.bash.logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

“per-interactive-shell”是什么意思?特别是,这里的“per”是什么意思?这里的“per”是“每个”的意思吗?每个交互式外壳?或者还有别的意思吗?

“每个交互式 shell 的单独启动文件”是否意味着“每个交互式 shell 的单独启动文件”?

答案1

这些bashrc文件用于初始化每个单独的交互式 shell。

我有点不确定为什么这里实际上需要“per-”前缀,因为登录 shell 也存在完全相同的情况(尽管对于其他文件而言)。此外,非交互式 shell 将使用$BASH_ENV保存路径名的任何文件,或者换句话说,“$BASH_ENV是每个非交互式 shell 的启动文件”(如果您愿意的话)。

这可能是试图强调(无论出于何种原因)这些文件的实际来源每个交互式外壳。

该措辞是在bash(我相信)的 2.0 版本中引入的。

答案2

这里有两件事。首先是简单的:

“个人”只是“个人”的另一个词,意思是(在本例中)用户帐户主目录中的文件。事实上,请注意~/所有个人/个人文件的前缀。

在桌面系统(例如家里的计算机)上,您通常只有一个用户帐户,但在服务器计算机上,可以注册多个帐户,并且每个帐户都有自己的主目录,因此有自己的个人/个人.bash_profile.bashrc等等。


现在是困难的一个,为了尝试解释这一点,我需要一个简短的序言:

Bash 区分“登录” 交互式 shell 和 “其他“交互式 shell。(我对其他程序没有经验,例如zshksh但我想它们也有)。

例如,在 Linux 系统上登录shell 通常只是您输入(正确)用户名和密码后启动的第一个 shell文本控制台或通过 ssh 等网络连接。

相反, ”其他” 交互式 shell 通常是当您单击终端仿真器应用程序的图标时由图形桌面启动的 shell。

其他”(即非登录)交互式 shell 也是当您随后调用嵌套交互式 shell 时,甚至是从登录一。

后一种情况的一个实际例子。假设您在验证自己身份后出现在第一个 shell 的提示符下(即登录)通过 ssh 到远程计算机:这就是登录交互式外壳;但如果您随后键入bash并按 Return 键,您将开始一个新的其他交互式外壳。您可以根据需要嵌套任意数量的它们。只是,您需要exit为每个命令键入(或 Control-D),以便展开您启动的嵌套交互式 shell 堆栈。

Bash 的文档告诉你哪些文件在启动时自动执行登录shell 以及启动时的其他文件其他贝壳。还有一些文件仅在您退出时才会自动运行登录shell,但当你退出时就不会其他贝壳。

相关内容