bash – 如何更改command_not_found_handle中的当前工作目录
发布时间:2020-12-15 21:03:21 所属栏目:安全 来源:网络整理
导读:我正在尝试在 Bash中编写一个未找到的句柄,它执行以下操作: 如果$1存在并且它是一个目录,则cd进入它. 如果在用户定义的目录$DEV_DIR中存在$1,则cd进入它. 如果以前的条件不适用,则失败. 现在我有这样的事情: export DEV_DIR=/Users/federico/programacion/
我正在尝试在
Bash中编写一个未找到的句柄,它执行以下操作:
>如果$1存在并且它是一个目录,则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但显然这不起作用.任何有关如何解决这个问题的提示将不胜感激. 解决方法
我认为正在发生的是shell fork()在设置任何重定向之后但在查找命令之前,因此command_not_found_handle不会影响交互式shell进程.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |