我正在使用一个简单的cli工具来更改当前终端窗口的项目目录。 cli工具是使用click包以python编写的。从我所看到的情况来看,我认为不可能更改目录,但也许有人对此有深刻的见识,将有所帮助。
对于示例工作流程
$ pwd
/home/username
$ grab open projectA
$ pwd
/home/username/projects/projectA
$ grab open projectB
$ pwd
/home/username/projects/different/location/projectB
我确实知道的事情。
os.chdir(path)
仅在当前脚本旁边运行,一旦执行对终端没有任何影响。subprocess.run(['cd', 'path'])
将抛出FileNotFoundError: [Errno 2] No such file or directory: 'cd'
$ source change_dir.sh
将在命令行上运行,但是尝试在subprocess
中将产生相同的FileNotFoundError
。注意,change_dir.sh是一个简单的脚本,它使用cd来更改路径。我真的是在寻找解决此问题的方法,或者被告知这是不可能的。我可能要尝试的下一件事是在终端中为bash shell午餐,类似于使用python启动虚拟环境时发生的情况。马上就觉得这对我来说是错误的方式。
任何建议都会有所帮助。
您可以创建函数
grab() {
case "$1" in
open)
cd $(command grab open "$2");;
*)
command grab "$@";;
esac
}
将其加载到bash中
$ . grab.sh
然后,当您跑步时
$ grab open projA
将更改目录,以及其他任何子命令
$ grab other whatever
它将运行grab
。