cd a un directorio escribiendo su nombre?

Por ejemplo, si existe un directorio 'blob' y simplemente escribo 'blob[return]', entonces el sistema cdingresa al directorio blob por mí.

En Linux (Ubuntu) puedo agregar shopt -s autocda mi .bashrcarchivo, pero en OS X esto da un error:-bash: shopt: autocd: invalid shell option name

Respuestas (2)

autocdfue agregado en bash 4.0. Puede instalar una versión más nueva de bash con Homebrew y luego cambiar el shell de inicio de sesión predeterminado con chsh:

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

Después de abrir un nuevo shell de inicio de sesión (o una pestaña de forma predeterminada en Terminal o iTerm 2), echo $BASH_VERSIONdebería imprimir algo como 4.2.45(2)-release.

Terminal e iTerm 2 abren nuevos shells como shells de inicio de sesión de forma predeterminada, por lo que bash lee ~/.bash_profilepero no ~/.bashrc. Si no obtiene ~/.bashrcde ~/.bash_profileni nada, agregue shopt -s autocda ~/.bash_profileen lugar de ~/.bashrc.

Gran respuesta. Bash 4 también está disponible en MacPorts: la sustitución sudo port install bashen su paso 1 también funciona.
Hice lo anterior. Terminé con bash 4.2.29 e hice los cambios en /etc/shells e hice el cssh pero no me gustó
@MichaelDurrant Edité la respuesta. bash -versionsería la primera versión en $PATH. ¿Lo intentaste echo $BASH_VERSION?
funciona si ejecuto el comando directamente /usr/local/bin/bash - obtengo v4.2 pero ¿cómo hago que sea mi shell predeterminado para una nueva ventana?
@MichaelDurrant ¿Su aplicación de terminal está configurada para abrirse con algo como /usr/bin/logino login -fp $USERen las preferencias?
Aceptado y agregué una serigrafía de dónde cambiar eso.
Aunque no funciona en tmux y tampoco muestra mi indicador de PS1 (?) con el directorio y el nombre de usuario
@MichaelDurrant Eliminé la captura de pantalla de la respuesta ya que tanto Terminal como iTerm 2 deberían abrir de forma predeterminada un shell de inicio de sesión. Si el shell predeterminado es /usr/bin/local/bashsin --login, .bash_profileno está cargado.
[no aceptar] Esto no funciona para una Mac nueva que estoy configurando.
Intenté nuevamente usar bash más nuevo pero incluso ejecuté /usr/local/bin/bash y luego bash --version dice 3.2.51(1)después de un brew install bashdicho4.2.45 already installed
Si /binestá antes /usr/local/binen el camino, bash --versiones como /bin/bash --version. Prueba echo $BASH_VERSIONen su lugar. ¿Agregaste shopt -s autocda ~/.bash_profileo ~/.bashrc?
2017 se encontró con esto nuevamente. Y nuevamente se quedó atascado en la versión anterior. @user495470 eliminó mi captura de pantalla, lo que realmente me habría ayudado. No me importa lo que 'debería' suceder. Como es, esta respuesta me lleva atascado cada vez que la redescubro.

La salida de shopt -ppuede ser de alguna ayuda aquí. Imprime una lista de opciones configurables. Lamentablemente, Lion noautocd es uno de ellos (ver extracto a continuación).

Editar la respuesta de Lauri anterior tiene una solución para actualizar su 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