tcshの複数行PATH

tcshの複数行PATH

許可された答えからインスピレーションを得ました。このスレッド、tcsh(バージョン6.14.00)から同様の構造をコピーしようとしましたが、成功しませんでした。

setenv new_PATH (
/some/path
/some/other/path

# Some comments
/foo/path

# Another group
/bar/path

$PATH) # Attach $PATH at the end in case we had previous declarations

setenv PATH `sed -e '/^#/'d -e '/^$/'d << EOF | paste -d ":" -s $new_PATH`

" "エラーが発生しますToo many ('s。私は何が間違っていましたか?

答え1

次のことができます。

set path = (        \
    /this/dir       \
                    \
# This is a comment \
                    \
    /that/dir       \
    /another/dir    \
)

別の方法は、ファイルからディレクトリ名を読み取ることです。

set path = ()
foreach dir (`/bin/cat path.txt`)
    set path = ( $path $dir )
end

/bin/catちょうど私を壊したので指定する必要があります$PATH

catコメントをフィルタリングすること(たとえば、単純なコマンドsed/bin/sedコマンドなど)に置き換えることができます。

これにより、スペースやその他の興味深い文字を含むディレクトリパスに問題が発生する可能性がありますが、とにかくこれらの問題を避けるようにしてください。

答え2

setenv環境変数を設定すると配列にすることはできません。setenv汎用コマンドの構文があります。

このsetコマンドはシェル変数を配列に設定します。すべての要素を同じ行に配置する必要があります。

set new_PATH = ( /some/path /some/other/path … )

Tcshはpathシェル変数をPATH環境変数と同期するため、これを手動で実行する必要はありません。

set new_PATH = ( /some/path /some/other/path … )
set new_PATH = ( $new_PATH /more )
set path = $new_PATH

または直接

set path = ( /some/path /some/other/path … )

答え3

tcsh は PATH 環境変数を次のように定義します。 setenv PATH /path

次のように変数に追加します。 set PATH ($PATH /add/path/here /another/here)

環境変数を自分に渡す場合は、現在設定されている場所に追加するだけです。

環境変数を設定するのがどれほど簡単かを判断してください。スクリプト化された理由はありません。それ一つ変数を設定するコマンドです。

OP注:設定する必要がある変数を設定する最後の行ですset PATH ($PATH <then issue sed>

関連情報