перейдите в каталог, введя его имя?

20

Например, если существует каталог «blob», и я просто набираю «blob [return]», тогда система cdпопадает в каталог blob для меня.

В Linux (Ubuntu) я могу добавить shopt -s autocdв свой .bashrcфайл, но в OS X это дает ошибку:-bash: shopt: autocd: invalid shell option name

Майкл Даррант
источник

Ответы:

25

autocdбыл добавлен в Bash 4.0. Вы можете установить более новую версию bash с помощью Homebrew, а затем изменить оболочку входа по умолчанию 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 по умолчанию открывают новые оболочки в качестве оболочек входа в систему, поэтому bash читает, ~/.bash_profileно не читает ~/.bashrc. Если вы не источник ~/.bashrcиз ~/.bash_profileили что - нибудь добавить shopt -s autocdк ~/.bash_profileвместо ~/.bashrc.

LRI
источник
1
Отличный ответ. Bash 4 также доступен в MacPorts: подшаг sudo port install bashна шаг 1 также работает.
ephsmith
Я сделал выше. Я закончил с bash 4.2.29, и я внес изменения в / etc / shells и сделал cssh, но без радости
Майкл Даррант
@MichaelDurrant Я отредактировал ответ. bash -versionбудет первая версия на $ PATH. Ты пробовал echo $BASH_VERSION?
Lri
это работает, если я запускаю команду напрямую / usr / local / bin / bash - я получаю v4.2, но как мне сделать эту оболочку по умолчанию для нового окна?
Майкл Даррант
1
@MichaelDurrant Настроено ли ваше терминальное приложение на что-то подобное /usr/bin/loginили login -fp $USERв настройках?
Lri
2

Вывод shopt -pможет быть полезен здесь. Он печатает список настраиваемых параметров. К сожалению, на Lion, autocdэто не один из них (см отрывок ниже).

Изменить ответ Лаури выше есть решение для обновления вашей оболочки, чтобы включить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
ephsmith
источник