来自.cshrc的源.bashrc

时间:2010-08-03 13:59:38

标签: bash csh

是否可以在非交互式会话中从 .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文件的任何更改都会影响远程机器。

欢迎任何想法 - 谢谢你的帮助!

2 个答案:

答案 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中运行。