Bash
使用 shopt -s autocd 有什麼注意事項嗎?
我最近發現了這個功能
shopt -s autocd
:autocd If set, a command name that is the name of a directory is executed as if it were the argument to the cd command. This op‐ tion is only used by interactive shells.
乍一看它似乎很有幫助,但我不是 Bash 專家,我想知道使用它是否是一個錯誤。
設置有沒有潛在的危險
shopt -s autocd
?我對腳本和與其他應用程序或配置的衝突特別感興趣。
我要出來說不,至少沒有嚴重的警告。原因
autocd
不是預設值,也不是因為它很危險,而是因為 shell 預設為其編寫腳本的行為,並且autocd
在腳本中並沒有真正有用,因為它的唯一目的是節省輸入。您在互動式配置中設置的選項(例如
.bashrc
,.zshrc
)對腳本沒有影響。它們不會與任何應用程序衝突。從理論上講,其他一些配置可能會與 衝突
autocd
,但不太可能。最多您可能會遇到在使用時不起作用的配置autocd
,但即便如此,我也想不出一個合理的例子。命令名總是優先於目錄名。例如,如果您有一個名為 的目錄
ls
,則 running 會ls
呼叫ls
命令,而不是cd ls
. 因此,不存在意外更改為目錄而不是執行命令的風險,除非您輸入錯誤的命令名稱並且它恰好與目錄名稱匹配。如果您輸入錯誤的目錄名稱並且您鍵入的內容恰好是命令的名稱,那麼您可能會意外地執行命令而不是更改為目錄。這很少是一個問題。
對於它的價值,我已經使用
autocd
了很長時間,對我來說,當 bash 沒有它時,它是 zsh 的主要賣點之一。