Я пытаюсь написать не найденный дескриптор в Bash, который выполняет следующее:
- Если существует $ 1 и это каталог,
cd
в него. - Если$ 1 существует в пользовательском каталоге
$DEV_DIR
, `cd в него. - Если предыдущие условия не применяются, не удаются.
Прямо сейчас у меня есть что-то вроде этого:
export DEV_DIR=/Users/federico/programacion/
function command_not_found_handle () {
if [ -d $1 ]; then # the dir exists in '.'
cd $1
else
to=$DEV_DIR$1
if [ -d $to ]; then
cd $to
echo `pwd`
else
echo "${1}: command not found"
fi
fi
}
И хотя это, кажется, работает (команда echo pwd
печатает ожидаемый каталог), каталог в реальной оболочке не изменяется.
У меня сложилось впечатление, что, поскольку это функция внутри моего .bashrc
, оболочка не будет работать, и я смогу выполнить cd
, но, очевидно, это не работает.Любые советы о том, как решить эту проблему, будут оценены.