[英]cd Terminal at a given directory after running a Python script?
我正在研究一個簡單的Python腳本,它可以使用subprocess
和/或os
來執行一些命令,這些工作正常。
但是,當腳本退出時,我想在實際的終端(在這種情況下是OS X)上cd
,所以在退出時,新文件就可以在創建目錄的目錄中使用了。 以下所有( subprocess.Popen
, os.system
, os.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.