在.screenrc中设置环境变量

时间:2012-12-20 14:15:10

标签: gnu-screen

我正在尝试编写一个.screenrc文件,我可以用它来设置特定项目的开发 - 它将启动几个屏幕,cd到正确的位置,在编辑器中打开正确的文件,并设置测试所需的一些环境变量。

我无法让环境设置正常工作..我已尝试将其放入`~/.screenrc

setenv PATH ~/src/my_proj/bin/:$PATH

这不起作用,我认为问题是在screen设置PATH之后,常规shell初始化脚本会启动并更改它。

我不想禁用常规shell init脚本。在初始化shell之后,有没有办法让屏幕setenv ?或者,可以屏幕将变量设置为只读吗?

4 个答案:

答案 0 :(得分:6)

我会用一些bash魔法代替。尝试将这样的内容添加到~/.screenrc文件中:

screen -t "window" bash -ic 'PATH=~/src/my_proj/bin/:$PATH bash'

有关详情,请使用Ctrl-a Ctrl+cCtrl-a c为新创建的窗口设置此设置,请参阅我对其他帖子的回答:https://stackoverflow.com/a/21717641/1413849

答案 1 :(得分:2)

对我而言

setenv PATH /home/someuser/bin:$PATH
在screenrc文件中

完成了这个技巧。

我认为'〜'到' / home / someuser'是bash特定的,不会在screenrc中工作。

答案 2 :(得分:1)

一旦该进程启动,screen无法改变shell进程的环境变量,也没有办法使环境变量成为只读(值存储在每个进程的内存中,并且每个进程都可以完全访问它们。)

(好吧,可能有一些丑陋的系统特定的方法来做到这一点,但它是类似Unix的系统旨在阻止你做的事情。)

您需要修改shell的初始化脚本,以便保留现有值$PATH,可能会添加它,而不是将其设置为忽略其现有值的新值。

如果您想有条件地执行此操作,可以测试是否存在$STY,仅当shell(或任何其他进程)在screen下运行时才会设置。

此外,screen的{​​{1}}命令似乎无法识别setenv字符。我尝试将类似~添加到临时setenvscreenrc包含文字$PATH字符。 ~似乎识别bash中的~语法,但其他shell则不然。将$PATH替换为~ $HOME确认的screen

答案 3 :(得分:0)

对我来说,我只是在require~/.bash_profile

中设置了环境
~/.bashrc

它奏效了,享受它。