当其路径作为命令输入时, cd 到目录(而不是“foo 是一个目录”错误)

当其路径作为命令输入时, cd 到目录(而不是“foo 是一个目录”错误)

我讨厌bash出现“duh!”之类的错误:

foo$ ./bar
-bash: ./bar: is a directory

我曾经很喜欢 AmigaOS shell,其中目录的“执行”只是意味着将其设置为当前目录:

foo$ ./bar
bar$ 

有可能吗bash?(当然没有无限数量的别名。)

答案1

Bash 4.0 有该autocd选项。

来自官方常见问题解答

有一个新的“autocd”选项,当启用时,会导致 bash 尝试“cd”到作为简单命令的第一个单词提供的目录名。

另外,至少从 2.0 开始,查看任何版本的CDPATH环境变量。它允许您通过在列出的目录中搜索命令中指定的目录来缩短命令。man bashcdcd

答案2

不知道 bash 但这在 zsh 中是可能的。

# ~/.zshrc
setopt autocd

编辑:您可能可以在 bash 中以与 ubuntu 捕获未找到命令相同的方式处理此问题

    # bashrc

    function command_not_found_handle {
            if [ -d $1]; then
                cd $1
            else
                echo command not found
            fi
    }

答案3

作为未来搜索的文档,这在 csh / tcsh 中也是可能的,尽管名称不同:

# ~/.cshrc
set implicitcd

此值也可以设置为 verbose,然后回显以这种方式调用的 cd 命令。

相关内容