0

1 つのエイリアスを含む非常に小さなスクリプトを作成し、それを実行しましたが、コマンド ts を実行していません。この問題を解決するための情報を提供してください。

#!/bin/tcsh
alias ts 'cd /path/goswami/;'
ts
4

2 に答える 2

1

この質問は、スクリプトの実行とスクリプトのソースの違いに関するものだと思います。

実行権限を設定してスクリプトを実行し、それを絶対パスまたは相対パスで呼び出すか、PATH にある場合は名前だけで呼び出すと、スクリプトを解釈するための新しいシェル プロセスが作成されます (シェル タイプが決定されます)。スクリプトの先頭にあるあいまいな #!/bin/xxx によって)。

sourceキーワードまたは. 構文、つまり次のいずれか:

source test.sh
. test.sh

...その後、ファイルが読み取られ、現在のシェルで実行されます。

私が考えることができるスクリプトを実行するよりもソースを使用することのいくつかの意味は次のとおりです。

  • スクリプトで設定された環境変数およびその他のシェル変数は、スクリプトの「実行」が完了した後も引き続き使用できます。
  • ソース スクリプトから exit を呼び出すと、呼び出し元のスクリプトまたはシェルが終了します。
  • 新しいシェル プロセスを開始するオーバーヘッドは追加されません。呼び出しが少ない場合は気にならないかもしれませんが、スクリプトを何度もループするとオーバーヘッドが増えます。

スクリプトを実行するのではなく、スクリプトをソースしたいようです。

于 2014-05-12T06:27:21.200 に答える