我试图通过python脚本更改终端目录。我看过这个post和其他人喜欢它,所以我知道os.chdir公司,但它的工作方式不是我想要的。os.chdir公司似乎更改了目录,但仅适用于python脚本。例如,我有这个代码。在
#! /usr/bin/env python
import os
os.chdir("/home/chekid/work2/")
print os.getcwd()
不幸的是,运行之后,我仍然在python脚本的目录中(例如/home/chekid),而不是我想要的目录。见下文。在
^{pr2}$我该怎么办?在
Edit:看起来我要做的事情在“普通”python中并不存在。我确实在附近找到了一份工作,尽管在我看来不那么优雅。在
cd `./changedirectory.py`
当前工作目录是进程的属性。它不能被其他程序更改,例如通过运行单独的Python程序来更改shell中的当前工作目录。这就是为什么
cd
总是一个shell内置命令。在不能。shell的当前目录属于shell,而不是您。在
(好吧,你可以^{} 这个shell,让它调用^{} ,但这可能不是一个好的设计,在Windows上不起作用,而且我也不会开始来知道如何在纯Python中实现它,除非你可能需要处理ctypes或类似的东西。)
您可以使用当前的工作目录启动子shell。这可能足够接近您的需要:
原来的外壳仍然会在那里,所以要确保你不要把它挂在那里。如果最初使用
exec
内建函数调用Python(例如exec python /path/to/script.py
),那么原始shell将被Python进程替换,您不必担心这个问题。但是如果Python退出时没有启动shell,那么您将完全没有shell打开。在如果你作弊,你可以:制作一个bash脚本来调用python脚本。python脚本返回要将目录更改为的路径。然后bash脚本执行acactual chdir。当然,您必须使用“source”在bashshell中运行bash脚本。在
相关问题 更多 >
编程相关推荐