繁体   English   中英

如何使用 Bash 中的 command_not_found_handle 更改当前目录?

[英]How to change current directory using the command_not_found_handle in Bash?

在 my.bashrc 文件中,我有一个 function

changeDirectory()
{
 cd "/home/bin"
}

如果我在 /home 并在命令行中键入 changeDirectory,则当前目录变为 /home/bin

如果从其他函数调用这个 function,它也可以改变当前目录。

handler()
{
 changeDirectory
}

如果我在命令行中键入 handler,它会将我的当前目录更改为 /home/bin

但是,如果我从此 function 调用 changeDirectory:

command_not_found_handle()
{
 changeDirectory
 echo "$PWD"
}

当我输入一个找不到的命令,并且调用了这个 function 时,它会打印 /home/bin,但是当我在命令行上输入 pwd 时,我仍然在 /home

command_not_found_handler function 的行为似乎与正常功能不同。 是否可以更改我的当前目录?

@Cyrus 的回答略有不同,使用临时文件而不是退出代码。

command_not_found_handle () { touch $HOME/.changedirectory.$$; }
PROMPT_COMMAND='rm $HOME/.changedirectory.$$ 2>/dev/null && changeDirectory'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM