我正在尝试编写一个.screenrc文件,我可以用它来设置特定项目的开发 - 它将启动几个屏幕,cd到正确的位置,在编辑器中打开正确的文件,并设置测试所需的一些环境变量。
我无法让环境设置正常工作..我已尝试将其放入`~/.screenrc
:
setenv PATH ~/src/my_proj/bin/:$PATH
这不起作用,我认为问题是在screen
设置PATH
之后,常规shell初始化脚本会启动并更改它。
我不想禁用常规shell init脚本。在初始化shell之后,有没有办法让屏幕setenv
?或者,可以屏幕将变量设置为只读吗?
答案 0 :(得分:6)
我会用一些bash魔法代替。尝试将这样的内容添加到~/.screenrc
文件中:
screen -t "window" bash -ic 'PATH=~/src/my_proj/bin/:$PATH bash'
有关详情,请使用Ctrl-a Ctrl+c
或Ctrl-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
字符。我尝试将类似~
添加到临时setenv
,screenrc
包含文字$PATH
字符。 ~
似乎识别bash
中的~
语法,但其他shell则不然。将$PATH
替换为~
$HOME
确认的screen
。
答案 3 :(得分:0)
对我来说,我只是在require
或~/.bash_profile
~/.bashrc
它奏效了,享受它。