Назад | Перейти на главную страницу

cd в каталог, когда его путь вводится как команда (вместо ошибки «food is a directory»)

Я ненавижу когда bash дает мне "ага!" вид ошибки:

foo$ ./bar
-bash: ./bar: is a directory

Раньше я любил оболочку AmigaOS, в которой «выполнение» каталога просто означало установку его в качестве текущего каталога:

foo$ ./bar
bar$ 

Возможно ли это в bash? (конечно, без бесконечного количества псевдонимов.)

Bash 4.0 имеет autocd вариант.

Из Официальный FAQ:

Есть новая опция 'autocd', которая, когда включена, заставляет bash пытаться выполнить cd к имени каталога, которое указывается в качестве первого слова простой команды.

Также обратите внимание на CDPATH переменная среды в man bash для любой версии, начиная с версии 2.0. Это позволяет сократить cd команд путем поиска в перечисленных каталогах каталога, указанного в cd команда.

Не знаю о 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
    }

В качестве документации для будущих поисков это также возможно в csh / tcsh, хотя имя отличается:

# ~/.cshrc
set implicitcd

Это значение также может быть установлено на подробный, который затем повторяет команды cd, которые вызываются таким образом.