私はこれを試しました
PATH=$PATH$( find $HOME/scripts/ -type d -printf ":%p" )
-printf
ただし、これはLinuxでのみ機能し、OSX(またはFreebsd)ではPOSIXではないため機能しません。どちらのプラットフォームにも互換性のあるバージョンを作成する方法は?
答え1
bash または dash シェルに対して、次の操作を行います。
PATH=$PATH$(find $HOME/scripts/ -type d -exec printf ":%s" {} +)
また、魚の殻を使用するには、次のようにします。
set -x PATH $PATH (find $HOME/scripts/ -type d -exec printf ":%s" \{\} +)
答え2
Qタグとタイトルを付けたので、bash
これはまったく不要なソリューションですfind
。 bashを使用してください。グローバルスター再帰ディレクトリ:
PATH=${PATH}$(shopt -s globstar dotglob; printf ":%s" ~/scripts/**/)
shopt はサブシェルで実行されるため、実行中のシェルには影響しません。printf
bashが組み込まれています。コロンを慎重に入れました。今後%s
最後に意図しない空のパス文字列が発生しないように、フォーマット文字列にprintfを追加します(.
PATHに追加するのと同じ)。