Fra*_*wis 40 unix linux bash gnu-screen .bash-profile
在我进行更改后,.bash_rc或者.bash_profile当我启动GNU屏幕时,它无法识别这些更改.我可以
source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
它适用于我打开的当前屏幕窗口,但我必须为我打开的每个屏幕窗口执行此操作.
如何获取屏幕以读取我的bash配置中的最新更改?
Mik*_*ike 59
如果您希望屏幕始终将您的shell视为登录shell,并且如果刚刚正常启动新shell,则会获取相同的文件,请添加以下内容~/.screenrc(或者~/.byobu/.screenrc,如注释中所指出的那样):
shell -$SHELL
Run Code Online (Sandbox Code Playgroud)
这样,每次启动新屏幕时,都无需手动指示它来源文件.虽然您必须进行更改,并希望这些更改能够反映在当前屏幕中.
可以在此处找到此文档(以及许多其他屏幕详细信息).基本上,shell是一个命令屏幕告诉它在需要创建新shell时运行以下命令. $SHELL是保存首选shell路径的常用变量.-前面的破折号$SHELL表示它应该作为登录shell运行(这通常意味着它来源~/.bash_profile等).
但值得指出的是,屏幕默认只是从你开始屏幕的shell继承大多数环境变量; 并且登录子shell可能以意外的方式改变一些环境变量.我碰到了我的$ PATH的元素基本上被置换的情况.由于超级用户的这个特别优秀的答案,我解决了这个问题.
您可能会注意到该source命令可用.重要的是要注意这是一个screen命令文件,而不是shell命令.其他相关(屏幕)命令包括eval和exec.
gpo*_*ojd 17
你必须在你打开的每个屏幕上都这样做,因为它们都是不同的shell.如果每次打开新shell时都需要更改,我建议您将更改放在〜/ .bashrc中.
显然,您可以使用以下语法一次向所有窗口发送命令:
C-a :
at "#" stuff "source ~/.bash_profile^M"
Run Code Online (Sandbox Code Playgroud)