我最近发现了这个功能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 的主要卖点之一。