我正在尝试编写一个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不会fork,我可以执行cd
,但显然这并没有起作用。如果您有解决方法,请告诉我。
cd ~/prog; cd something
有点烦人。我很乐意听取其他建议。 - Federico Builes