bashで$ PATHにサブディレクトリを追加するには、findを使用してください。

bashで$ PATHにサブディレクトリを追加するには、findを使用してください。

私はこれを試しました

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 はサブシェルで実行されるため、実行中のシェルには影響しません。printfbashが組み込まれています。コロンを慎重に入れました。今後%s最後に意図しない空のパス文字列が発生しないように、フォーマット文字列にprintfを追加します(.PATHに追加するのと同じ)。

関連情報