使用 shopt -s autocd 有什么注意事项吗?

mga*_*ort 3 bash cd-command shell-script shell-builtin shopt

我最近发现了这个功能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.
Run Code Online (Sandbox Code Playgroud)

乍一看似乎很有帮助,但我不是 Bash 专家,我想知道使用它是否可能是错误的。

设置是否有任何潜在危险shopt -s autocd?我对脚本编写以及与其他应用程序或配置的冲突特别感兴趣。

Gil*_*il' 7

我会站出来说不,至少没有严重的警告。原因autocd不是默认值不是因为它很危险,而是因为外壳默认为它们的脚本行为,并且在脚本中并autocd没有真正有用,因为它的唯一目的是节省输入。

您在交互式配置中设置的选项(例如 .bashrc.zshrc)对脚本没有影响。它们不会与任何应用程序发生冲突。

理论上有可能其他一些配置会与 autocd,但不太可能。使用 时,您最多可能会遇到不起作用的配置autocd,但即便如此,我也想不出一个看似合理的例子。

命令名总是优先于目录名。例如,如果您有一个名为 的目录ls,则运行会ls调用ls命令,而不是cd ls。因此,不存在意外更改目录而不是运行命令的风险,除非您输入错误的命令名称并且它恰好与目录名称匹配。

如果您键入错误的目录名称并且您键入的内容恰好是命令的名称,则存在意外运行命令而不是更改到目录的风险。这很少是一个问题。

对于它的价值,我已经使用autocd了很长时间,对我来说,当 bash 没有 zsh 时,它是 zsh 的主要卖点之一。