Я ненавижу когда 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, которые вызываются таким образом.