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

使用 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?我对脚本编写以及与其他应用程序或配置的冲突特别感兴趣。

答案1

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

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

理论上,其他一些配置可能会与 发生冲突autocd,但可能性不大。最多你可能会遇到在使用时不起作用的配置autocd,但即便如此,我也无法立即想到一个合理的例子。

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

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

就其价值而言,我已经使用了autocd很多年,对我来说,当 bash 没有 zsh 时,它是 zsh 的主要卖点之一。

相关内容