2016-11-08 1 views
1

cshでスクリプトを使用するのはなぜですか(bashにはありません)。 cshbashの両方のファイルがあり、jrコマンドの場合はaliasに設定されています。bashとcshの "Source"

source \csource  
jr something 

と、これは魔法のように動作しますが、::

source \bsource  
jr something 

は私に

jr:command not foundを与え、私は2つのスクリプトを持っているのbashやcshの

ため\csourceため

\bsource

誰かが光を照らしてくれますか? expand_aliasesオプションが明示的に有効にされない限り、シェルは、対話式でないとき

種類がbashで

ボブ

+0

を( '\のcsource'、' \のbsource')バックスラッシュの目的は何ですか? 'csource'と' bsource'も同じように書きます。たぶん 'bsource'ファイルがエイリアスを間違って設定するかもしれません。ソースを表示してください。 –

+0

バックスラッシュを助けるとドロップできますが、あなたが言ったように違いはありません。 'bash'と' csh'の両方でうまく動作するので、ソースファイルがうまくいっていると確信しています。スクリプトを介して供給される場合、 'csh'でのみ動作します。 – Ro8eK

答えて

1

については、エイリアスが展開されません。そのため、あなたは別名でファイルを調達する前に、このオプションを有効にする必要があります。

shopt -s expand_aliases 
source bsource 
jr 
+0

ああ、あなたは私の一日を救った!迅速で正確な回答をいただきありがとうございます。 – Ro8eK

+0

「bash」スクリプトは、エイリアスの代わりに関数(非対話シェルで使用される)を定義する必要があります。 'csh'は関数を持たないので、エイリアスは同じ目的を果たしますが、' bash'ではほとんどの場合エイリアスに関数を優先させるべきです。 – chepner