通过键入CD的名称进入目录?


20

例如,如果存在目录“ blob”,而我只是键入“ blob [return]”,那么系统cd对我来说就是blob目录。

在Linux(Ubuntu)中,我可以添加shopt -s autocd.bashrc文件中,但是在OS X上,这会导致错误:-bash: shopt: autocd: invalid shell option name

Answers:


25

autocd是在bash 4.0中添加的。您可以使用Homebrew安装较新版本的bash,然后使用以下命令更改默认的登录shell chsh

brew install bash;echo /usr/local/bin/bash|sudo tee -a /etc/shells;chsh -s /usr/local/bin/bash

打开新的登录外壳程序(或Terminal或iTerm 2中的默认选项卡)后,echo $BASH_VERSION应显示4.2.45(2)-release

Terminal和iTerm 2默认情况下会打开新的shell作为登录shell,因此bash读取~/.bash_profile但不读取~/.bashrc。如果你没有来源~/.bashrc,从~/.bash_profile什么的,加shopt -s autocd~/.bash_profile代替~/.bashrc


1
好答案。Bash 4也可以在MacPorts中使用:sudo port install bash了解您的第1步也可以 。
伊夫史密斯2012年

我做了以上。我最终以bash 4.2.29结束,我对/ etc / shells进行了更改,并进行了cssh但没有任何乐趣
Michael Durrant

@MichaelDurrant我编辑了答案。bash -version将是$ PATH上的第一个版本。你尝试了echo $BASH_VERSION吗?
Lri 2012年

如果我直接运行命令/ usr / local / bin / bash,它会起作用-我得到v4.2,但如何使我的默认shell用于新窗口?
迈克尔·杜兰特

1
@MichaelDurrant您的终端应用程序是否已按/usr/bin/loginlogin -fp $USER在首选项中设置为打开?
Lri 2012年

2

在这里的输出shopt -p可能会有帮助。它显示可设置选项的列表。可悲的是,在Lion上,autocd不是其中之一(见下文节选)。

上面编辑Lauri的答案提供了一种解决方案,可用于更新您的Shell以使其包含autocd

$ shopt -p
shopt -u cdable_vars
shopt -u cdspell
shopt -u checkhash
shopt -s checkwinsize
shopt -s cmdhist
shopt -u compat31
shopt -u dotglob
shopt -u execfail
shopt -s expand_aliases
shopt -u extdebug
shopt -u extglob
shopt -s extquote
shopt -u failglob
shopt -s force_fignore
shopt -u gnu_errfmt
shopt -u histappend
shopt -u histreedit
shopt -u histverify
shopt -s hostcomplete
shopt -u huponexit
shopt -s interactive_comments
shopt -u lithist
shopt -s login_shell
shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nocasematch
shopt -u nullglob
shopt -s progcomp
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath
shopt -u xpg_echo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.