環境変数を変更するには、tcshスクリプトを入手する必要があります。
いくつかのテストが行われることになっており、失敗した場合は、シェルを終了せずにソーシングを停止する必要があります。サブプロセスでは実行できない親プロセスの環境変数を変更する必要があるため、スクリプトをサブプロセスとして実行したくありません。これは、作成者が実際にスクリプトをサブプロセスとして実行できるこの質問と似ていますが、異なります。
通常の回避策は、すべてのenv var設定で一時ファイルを書き込み、最後にその一時ファイルをソースおよび削除するスクリプト(csh / bash / perl / python / ...)を実行するエイリアスを作成することです。興味のある方のための詳細情報があります(bashのソリューションのデモ)。私の非常に単純で短いものについては、追加のエイリアスは必要ありません。
source
したがって、私の回避策は、実行を停止する構文エラーを引き起こすことです。次に例を示します。
test $ADMIN_USER = `filetest -U: $SOME_FILE` || "Error: Admin user must own admin file"
短絡||
により、問題がない場合はエラーテキストが無視されます。テストが失敗すると、エラーテキストはコマンドとして解釈されますが、見つかりません。ソースが停止し、適切なエラーメッセージが生成されます。
Error: Admin user must own admin file: Command not found.
これを行うためのより良い方法はありますか?私が見落としていたいくつかのcsh/tcshビルトイン?