簡體   English   中英

cd運行Python腳本后,在給定目錄下的終端?

[英]cd Terminal at a given directory after running a Python script?

我正在研究一個簡單的Python腳本,它可以使用subprocess和/或os來執行一些命令,這些工作正常。

但是,當腳本退出時,我想在實際的終端(在這種情況下是OS X)上cd ,所以在退出時,新文件就可以在創建目錄的目錄中使用了。 以下所有( subprocess.Popenos.systemos.chdir )可以做什么,我從劇本想要的(即它們在執行目標目錄的東西),但在退出離開碼頭在腳本自己的目錄,而不是目標目錄。

我想避免將shell腳本寫入臨時文件只是為了實現這一目標,如果這種情況完全可能嗎?

可悲的是沒有。 不允許進程更改其父進程的環境,在這種情況下,您的Python腳本是shell的子進程。 您可以通過讓Python進程設置一個新的shell調用子進程來打開shell進程並將其呈現給用戶,從自身繼承修改后的環境,從而“偽造”它 - 但這有助於強制Python進程運行不斷。

這真的是shell腳本的用途.. :-)有人顯然需要編寫一個更傳統的shell(比如接近Bash而不是IPython),它可以使用python作為腳本語言。

暫時忘記Python,沒有子進程可以改變其調用shell的狀態。 因此,您需要一個改變調用shell狀態的構造,這正是Paul Creasey所暗示的。

alias mycd="cd `echo $1`"

其中echo可以用script_which_outputs_a_directory_name_on_stdout.py替換它有點像黑客,但至少它是一個老黑客。

您是否嘗試過在當前shell中運行該程序?

$. script.py

代替

$script.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM