我正在尝试在 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
但显然这不起作用。任何有关如何解决此问题的提示将不胜感激。
I think发生了什么事是外壳fork()
在设置任何重定向之后但在查找命令之前,所以command_not_found_handle
不能影响交互式 shell 进程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)