Path
如何將目錄的所有子目錄設置為 $PATH?
看起來在將目錄添加到 $PATH 時,它的子目錄不會遞歸添加。那我可以這樣做嗎?或者有什麼不支持的原因?
使用 find 遞歸地添加它們,如下所示:
PATH=$PATH$( find $HOME/scripts/ -type d -printf ":%p" )
警告:正如對問題的評論中提到的那樣,不鼓勵這樣做,因為它會帶來安全風險,因為不能保證添加的目錄中的執行檔不是惡意的。
遵循 Gilles 的回答並使用stow可能是更好的解決方案
通常的 unix 目錄結構將應用程序文件按種類分類到目錄中:
bin
執行檔、lib
庫、doc
文件等。那時它們被安裝在不同的目錄中;$PATH
通常應用程序被分組到幾個目錄中(因此許多系統在:/usr/local/bin
和/usr/bin
中只有三個目錄/bin
)。一個目錄中很少同時包含執行檔和子目錄,因此不需要將目錄的子目錄包含在$PATH
.有時可能有用的是
bin
將給定目錄的子目錄的所有子目錄包含在$PATH
:for d in /opt/*/bin; do PATH="$PATH:$d"; done
但是,很少這樣做。當執行檔在非標準目錄中時,通常的方法是
$PATH
在路徑中的目錄中創建符號連結,例如/usr/local/bin
.stow
實用程序(或)在這xstow
方面可能很有用。