2

デフォルトのシェルは bash です。.bashrc ファイルにいくつかの環境変数を設定しました。
.cshrc ファイルを使用するプログラムをインストールしました。いくつかの cshell スクリプトへのパスが含まれています。シェル ウィンドウで次のコマンドを実行すると、完全に機能します。

 exec csh

 source .cshrc

 exec bash

これらのコマンドを bash スクリプトに入れようとしましたが、残念ながらうまくいきませんでした。シェル ウィンドウからコマンドを実行するのと同じ結果を得るために、スクリプトを作成する別の方法はありますか。私の質問が明確になったことを願っています

4

2 に答える 2

1

警告: 次のスクリプトを .bashrc に入れないでください。bash がリロードされ、.bashrc が何度もリロードされます (いずれにせよ Cc で停止可能)。キット/CDS スタッフの起動スクリプトでこのスクリプトを使用することをお勧めします。(リズムはおそらく) 警告 2 : file2source で何かが失敗すると、「トリック」全体が停止します。

このスクリプトを呼び出します: cshWrapper.csh

#! /bin/csh
# to launch using 
# exec cshWrapper.csh file2source.sh
source $1
exec  $SHELL -i

を使用して起動します

exec ./cshWrapper.csh file2source.sh

csh を起動し、ファイルを読み込み、同じ親 bash シェルに戻ります。

例 :

$> ps
  PID TTY          TIME CMD
 7065 pts/0    00:00:02 bash
$>exec ./cshWrapper.csh toggle.csh
file sourced
1
$> echo $$
7065

私の場合、ファイル toggle.csh を使用します

#! /bin/csh
# source ./toggle.csh
if ! $?TOGGLE then
    setenv TOGGLE 0
endif

if ($?TOGGLE) then
    echo 'file sourced'
    if ($TOGGLE == 0) then
        setenv TOGGLE 1
    else
        setenv TOGGLE 0
    endif
endif
echo $TOGGLE

それが役に立てば幸い

于 2015-12-08T15:11:15.493 に答える