zshで動作するかどうかはわかりませんが、bashで動作します。
PATH=$(paste -d ":" -s << EOF
$PATH
/my/path/1
/my/path/2
/my/path/3
EOF
)
編集してさらに短く:
PATH=`paste -d ":" -s << EOF
$PATH
/my/path/1
/my/path/2
/my/path/3
EOF`
そして、プロセスを生成することなく:
new_path=(
"$PATH"
/my/path/1
/my/path/2
/my/path/3)
OLD_IFS="$IFS"
export IFS=":"
PATH="${new_path[*]}"
export IFS="$OLD_IFS"
二重引用符は重要なarroundのある$PATH
、$IFS
、${new_path[*]}
および$OLD_IFS
IFSの変数と回避シェルの解釈にスペースを維持します。
sedを使用したコメントと空行管理を含むUpdate2:
PATH=`sed -e '/^#/'d -e '/^$/'d << EOF | paste -d ":" -s
$PATH
/my/path/1
# This is a comment.
/my/path/2
/my/path/3
EOF`
コメント文字は行の最初の文字でなければならず、空の行は完全に空でなければなりません。コメントと空行の前にスペースとタブを管理するには、sed -e '/^[ \t]*#/'d -e '/^[ \t]*$/'d
代わりに(sed実装に固有の可能性があるため、テストするタブ)を使用します。