0

是否可以在非交互式会话中从.cshrc获取 .bshrc文件?我之所以问,是因为 tcsh 是我们工作时的默认 shell,而 .cshrc 必须用于最初设置环境。 但是,我对 tcsh 不是很熟悉,而且我在 bash 中有自己的设置,所以现在我的 .cshrc 文件末尾有以下几行:

if ( $?prompt && -x /bin/bash) then
  exec /bin/bash
endif

这工作正常,从 .bashrc 加载我的环境并为我提供交互式会话的 bash 提示,但现在我还需要对非交互式会话进行相同的设置,例如通过 SSH 远程运行具有所有正确路径的命令等。
在这种情况下我不能使用'exec',但我不知道如何切换到 bash 并“非交互地”加载 bash 配置文件。
我们所有的机器共享同一个主目录,所以对我本地 *rc 文件的任何更改也会影响远程机器。

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

4

2 回答 2

0

经过更多的研究,我现在很确定这行不通,但当然可以随时证明我错了!

要在 bash 中加载环境,我必须切换到 bash shell。即使这在“后台”是可能的,即没有得到提示,它仍然会破坏任何 tcsh 命令,然后尝试在 bash 下执行这些命令。

嗯,回到绘图板...

于 2010-08-03T16:03:13.340 回答
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 中运行。

于 2015-03-03T14:53:11.057 回答