我正在尝试在 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
命令打印预期的目录),但实际 shell 中的目录并没有改变。
我的印象是,由于这是我.bashrc
的 shell 内部的一个函数,所以我可以做到这一点,cd
但显然这不起作用。任何有关如何解决此问题的提示将不胜感激。