0

非対話型セッションで.cshrcから.bshrcファイルを取得することはできますか? tcsh が作業中のデフォルトのシェルであり、.cshrc を使用して最初に環境をセットアップする必要があるためです。 しかし、私は tcsh にあまり詳しくなく、bash で独自のセットアップを行っているため、現在、.cshrc ファイルの末尾に次の行があります。

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

これは問題なく動作し、.bashrc から環境をロードし、対話型セッションの bash プロンプトを表示しますが、非対話型セッションにも同じセットアップが必要です。たとえば、すべての正しい PATH を使用して SSH 経由でコマンドをリモートで実行するなどです。
その場合は「exec」を使用できませんが、bashに切り替えてbash構成ファイルを「非対話的に」ロードする方法がわかりません。
すべてのマシンが同じホーム ディレクトリを共有しているため、ローカルの *rc ファイルを変更すると、リモートのマシンにも影響します。

どんなアイデアでも大歓迎です - 助けてくれてありがとう!

4

2 に答える 2

0

さらに調査した結果、これは機能しないと確信していますが、もちろん、私が間違っていることを証明してください。

環境をbashにロードするには、bashシェルに切り替える必要があります。それが「バックグラウンドで」可能である場合、つまりプロンプトが表示されない場合でも、bashで実行しようとするtcshコマンドはすべて中断されます。

うーん、製図板に戻ります...

于 2010-08-03T16:03:13.340 に答える
0

が設定されている場合は への$command引数がcshあるため、リモート シェル コマンドです。これは私にとってはうまくいきます.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 に答える