【发布时间】:2022-01-27 23:02:22
【问题描述】:
我正在尝试编写一个程序来更改zsh 中的当前目录,而不创建zsh 的新实例。可能听起来令人困惑,但到目前为止我所尝试的应该会有所帮助。
说zsh 当前位于“用户”目录中,如下所示:
$ /Users/ →
如果我在 Python 上运行以下命令:
os.system("cd projects")
os.system("zsh")
它将zsh 更改为“项目”目录:
$ /Users/ → python main.py
$ /Users/Projects/ →
但这会创建zsh 的新实例,并且运行exit 不会关闭终端窗口。相反,我需要重新运行exit。
有没有办法让 Python 在不启动另一个实例的情况下更改 zsh 中的当前目录?
【问题讨论】:
-
似乎无法从子进程更改工作目录。检查此线程:stackoverflow.com/questions/3786678/…
-
它不会改变你的 current shell 会话中的任何东西;你的 Python 脚本启动了一个
zsh的新实例,是的,但是 Python 脚本还在运行,阻塞直到新的zsh退出,此时os.system返回并且你的 Python 脚本可以继续。此外,我无法重现已被代码更改的工作目录,如图所示。第一个os.system启动一个新的shell,执行cd命令,然后该shell 退出。由zsh启动的 shell 仍将拥有 Python 的任何工作目录。
标签: python macos command-line terminal zsh