加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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进入它.
>如果在用户定义的目录$DEV_DIR中存在$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进程.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读