Bash

使用 shopt -s autocd 有什麼注意事項嗎?

  • April 26, 2021

我最近發現了這個功能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 的主要賣點之一。

引用自:https://unix.stackexchange.com/questions/646800