CD para um diretório digitando seu nome?

20

Por exemplo, se um diretório 'blob' existir e eu apenas digitar 'blob [return]', o sistema cdestará no diretório blob para mim.

No Linux (Ubuntu) posso adicionar shopt -s autocdao meu .bashrcarquivo, mas no OS X isso gera um erro:-bash: shopt: autocd: invalid shell option name

Michael Durrant
fonte

Respostas:

25

autocdfoi adicionado no bash 4.0. Você pode instalar uma versão mais recente do bash com o Homebrew e alterar o shell de login padrão com chsh:

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

Depois de abrir um novo shell de login (ou uma guia por padrão no Terminal ou no iTerm 2), você echo $BASH_VERSIONdeverá imprimir algo parecido 4.2.45(2)-release.

O Terminal e o iTerm 2 abrem novos shells como shells de login por padrão, então o bash lê, ~/.bash_profilemas não ~/.bashrc. Se você não obtiver fontes ~/.bashrcde ~/.bash_profilenada, adicione shopt -s autocda em ~/.bash_profilevez de ~/.bashrc.

Lri
fonte
1
Ótima resposta. O Bash 4 também está disponível no MacPorts: a inclusão da sudo port install bashetapa 1 também funciona.
ephsmith
Eu fiz o acima. Acabei com o bash 4.2.29 e eu fiz as alterações para / etc / shells e fez o HSCS mas nenhuma alegria
Michael Durrant
@MichaelDurrant Eu editei a resposta. bash -versionseria a primeira versão em $ PATH. Você tentou echo $BASH_VERSION?
Lri
funciona se eu executar o comando diretamente / usr / local / bin / bash - recebo a v4.2, mas como faço para que meu shell padrão seja uma nova janela?
22812 Michael Durrant
1
@MichaelDurrant Seu aplicativo de terminal está definido para abrir com algo parecido /usr/bin/loginou login -fp $USERnas preferências?
Lri
2

A saída de shopt -ppode ser de alguma ajuda aqui. Imprime uma lista de opções configuráveis. Infelizmente, em Lion, nãoautocd é um deles (veja o trecho abaixo).

Editar A resposta de Lauri acima tem uma solução para atualizar seu shell para incluirautocd

$ 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
ephsmith
fonte