我讨厌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 bash
cd
cd
答案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 命令。