Bash
為什麼不將使用者目錄添加到 PATH?
對於使用者腳本,通常的建議是將其目錄附加到
$PATH
one’s 中.profile
:PATH="$PATH:$HOME/.myscripts" # or .bin or whatever
顯然這比預先添加它更安全:
PATH="$HOME/.myscripts:$PATH"
但是以安全的方式進行操作意味著您的腳本將被具有相同名稱的系統包所勝過。如果你給你的腳本命名
mount
,import
例如,當你嘗試使用它時會發生意想不到的事情。我知道很多人會將此視為一項功能,而不是錯誤。但就我個人而言,我希望能夠為我的腳本命名任何我喜歡的名稱,包括
import
,並讓它們毫無意外地執行。據我了解,預先準備的風險是:
- 惡意腳本可以
ls
在沒有 root 訪問權限的情況下重寫等(但僅在從標準發行版儲存庫安裝軟體時,這真的是一個問題嗎?)- 系統包可能會呼叫您的使用者腳本而不是其他系統包(但實際上,使用者包是否會呼叫
mount
或沒有完整路徑的任何東西?似乎是個壞主意)
.profile
在單使用者系統上預先設置 via 的安全影響究竟有多嚴重?
我認為你在這裡一針見血:
嘗試使用時會發生意想不到的事情
如果您使用標準命令創建一個名稱為 squats 的執行檔,那麼您就是在自找麻煩。但它是你的電腦(我假設),所以最終你可以用它做你喜歡的事情,最佳實踐或其他方式。
實現您正在尋找的更安全的方法是以附加方式設置 PATH,為您的腳本提供一個“安全”名稱(例如
jortstek_mount
),然後按照這些行向您的 shell 配置文件添加一個別名或普通函式mount() { command jortstek_mount "$@" }