cd运行Python脚本后,在给定目录下的终端?

时间:2010-05-09 21:30:52

标签: python bash shell directory terminal

我正在研究一个简单的Python脚本,它可以使用subprocess和/或os执行一些命令,这些命令工作正常。

但是,当脚本退出时我想cd实际终端(在本例中为OS X),所以在退出时,新文件就可以在创建目录的目录中使用了。以下所有内容(subprocess.Popenos.systemos.chdir)可以在脚本中执行我想要的内容(即他们在目标目录中执行内容),但是exit离开脚本自己的目录下的终端,而不是目标目录。

我想避免将shell脚本编写到临时文件中以实现此目的,如果这种情况完全可能的话呢?

3 个答案:

答案 0 :(得分:10)

可悲的是,没有。不允许进程更改其父进程的环境,在这种情况下,您的Python脚本是shell的子进程。您可以通过让Python进程设置一个新的shell调用子进程来打开shell进程并将其呈现给用户,从自身继承修改后的环境,从而“伪造”它 - 但这有助于强制Python进程运行不断。

这就是shell脚本的用途.. :-)有人显然需要编写一个更传统的shell(比如接近Bash而不是IPython),它可以使用python作为脚本语言。

答案 1 :(得分:4)

暂时忘记Python,没有子进程可以改变其调用shell的状态。因此,你需要一个改变调用shell状态的结构,这正是Paul Creasey所暗示的。

alias mycd="cd `echo $1`"

其中echo可以替换为script_which_outputs_a_directory_name_on_stdout.py这是一种黑客攻击,但至少它是一个老黑客。

答案 2 :(得分:1)

您是否尝试过在当前shell中运行该程序?

$. script.py

而不是

$script.py

相关问题