Mac Gnu-Screen 不加载默认的 .bash_profile

Mac Gnu-Screen 不加载默认的 .bash_profile

我的 bash_profile 中有一堆自定义设置。当我使用 gnu-screen 时,我意识到我的屏幕没有执行source /Users/disappearedng/.bash_profile。我尝试将源 /Users/disappearedng/.bash_profile 放入我的 .screenrc 文件中,但它抱怨别名不是命令...(我猜 screenrc 需要 screenrc 特定的命令)。

我尝试将 .bash_profile 更改为 .profile 或 .bash_rc。但都不起作用。

有什么帮助吗?

答案1

.bash_profile 文件(以及 .profile 文件)是为登录 shell 加载的,非登录 shell 使用 .bashrc(没有 _ 符号)。.screenrc 文件中有一行告诉 screen 在启动 screen 窗口时(当不启动特定程序作为窗口应用程序时)要生成哪个 shell。在我的 .screenrc 文件中,这是这样的(包括注释):

# shell:  Default process started in screen's windows.
# Makes it possible to use a different shell inside screen
# than is set as the default login shell.
# If begins with a '-' character, the shell will be started as a login shell.
  shell -$SHELL

检查您的 .screenrc 文件并验证 shell 行前面是否有破折号。通过使用该破折号符号并强制登录 shell,您将获得 .bash_profile 源。我的 .screenrc 中的 $SHELL 变量使用启动屏幕的 shell 提供的 shell 值(对我来说通常是 bash)。

如果你想知道的话,我发现登录 shell 和非登录 shell 之间的最大区别就是,通常调用非登录 shell 来执行脚本。

答案2

采购.bash_profile实际上与 Mac 终端应用程序不同,大多数终端应用程序不具备此功能。~/.bashrc但是,每次生成新 shell 时,屏幕都会读取。

如果您将其重命名~/.bash_profile~/.bashrc(如您的问题所示,bash 和 rc 之间没有下划线),那么它将被获取。

然而,我首选的策略是将所有设置放在中bashrc,然后从中获取它,bash_profile如下所示:

[ -f .bashrc ] && . .bashrc

答案3

这个命令可以修复你:

$echo "shell bash" >> ~/.screenrc

你可以在配置 gnu-screen 中找到很多选项此链接

答案4

Linux 登录 shell 通过在用户文件的情况下添加以下行来获取非登录 shell:

[[ -f ~/.bashrc ]] && . ~/.bashrc

相关内容