linux - 如何让 GNU screen 读取 .bash_profile/.bash_rc 更

.bash_rc.bash_profile 中进行更改后,当我启动 GNU screen 时,它无法识别这些更改。 我可以

source ~/.bash_profile

它适用于我打开的当前 screen 窗口,但我必须对我打开的每个 screen 窗口都这样做。

如何在 screen 上读取我对 bash 配置的最新更改?

最佳答案

如果您希望 screen 始终将您的 shell 视为登录 shell,并获取正常启动新 shell 时将读取的相同文件,请将以下内容添加到 ~/.screenrc (或者可能是 ~/.byobu/.screenrc,正如评论中所指出的):

shell -$SHELL

这样,您无需在每次启动新 screen 时手动告诉它获取您的文件。如果您只是进行了更改并希望这些更改反射(reflect)在您当前的 screen 中,那么您将不得不这样做。

可以在 here 找到这方面的文档(以及许多其他 screen 细节) .基本上,shell 是一个 screen 命令,告诉它在需要创建新 shell 时运行以下命令。 $SHELL 是保存首选shell 路径的常用变量。 $SHELL 前面的破折号 - 表示它应该作为登录 shell 运行(这通常意味着它获取您的 ~/.bash_profile等)。

然而,值得指出的是,screen 默认只从您启动 screen 的 shell 继承大多数环境变量;登录子 shell 可能会以意想不到的方式改变一些环境变量。我遇到了一种情况,我的 $PATH 的元素基本上被置换了。感谢this particularly excellent answer,我解决了这个问题在 super 用户上。

您可能会注意到可用的 source 命令。需要注意的是,这会获取 screen 命令文件,而不是 shell 命令。其他相关( screen )命令包括 evalexec .

关于linux - 如何让 GNU screen 读取 .bash_profile/.bash_rc 更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6945534/

相关文章:

php - 脚本 "/home/...../public_html/index.php"的 UID

windows - Node.js 开发,windows 还是 linux?

linux - 如果关键字触发然后执行命令,Shell 脚本来监视日志文件?

linux - 永久反转补丁文件

linux - 是否有一个 linux 命令来确定与给定进程 ID 关联的窗口 ID?

python - 如何在 Python 中监听 Linux 中的 'usb device inser

c++ - 如何在 Linux 中找到 'temp' 目录?

php - 根据外部请求在 Netbeans 中启动 XDebug

linux - 在像 "f () {}"这样的 bash shell 脚本函数定义中使用的括号是什么

linux - 如何在 Linux 命令行上解析 CSV 文件?