是否可以在非交互式会话中从 .cshrc 中获取 .bshrc 文件?
我问,因为tcsh是我们工作时的默认shell,最初必须使用.cshrc来设置环境。
但是,我对tcsh并不熟悉,而且我在bash中有自己的设置,所以现在我的.cshrc文件末尾有以下几行:
if ( $?prompt && -x /bin/bash) then
exec /bin/bash
endif
这很好用,从.bashrc加载我的环境并给我一个交互式会话的bash提示,但现在我还需要为非交互式会话设置相同的设置,例如通过SSH远程运行命令以及所有正确的PATH等
我不能在这种情况下使用'exec',但我无法弄清楚如何切换到bash并“非交互式”加载bash配置文件。
我们所有的机器共享同一个主目录,因此对本地* rc文件的任何更改都会影响远程机器。
欢迎任何想法 - 谢谢你的帮助!
答案 0 :(得分:0)
经过一些更多的研究后,我现在非常确定这不起作用,但当然可以随意证明我错了!
要在bash中加载环境,我必须切换到bash shell。即使可能“在后台”,即没有得到提示,它仍然会破坏任何tcsh命令,然后尝试在bash下执行。
嗯,回到绘图板......答案 1 :(得分:0)
如果设置了$command
,则存在csh
的参数,因此它是远程shell命令。这适用于我.cshrc
:
if ($?command) then
echo Executing non-interactive command in bash: $command $*
exec /bin/bash -c "${command} $*"
endif
echo Interactive bash shell
exec bash -l
测试:
$ ssh remotehost set | grep BASH
BASH=/bin/bash
...
证明它在Bash中运行。