簡體   English   中英

如何確定os.popen是否在同一shell中運行linux命令?

[英]How can I find out if os.popen is running the linux command in same shell?

我具有以下用於運行linux命令的python函數。 我正在運行一個創建一些環境變量的腳本,然后使用下面的函數運行linux命令,將所有這些變量再次移植到腳本中。 但是,似乎沒有使用第二條命令記錄第一條命令的環境變量。 我想知道這是因為os.popen每次調用時都在不同的shell中運行命令嗎? 如果是這樣,我如何修改我的代碼或使用哪個函數以使所有內容都在同一shell中運行?

def execute(cmd):
    '''Module to execute linux command'''
    try:
        proc = os.popen(cmd)
        out = proc.read().strip()
        return out
    except Exception,err:
        print "Exception occurred : %s"%str(err)
        raise(str(err))

不推薦使用os.popen() 取而代之的是subprocess.Popen() ,或者對於您的用例來說甚至更好的是subprocess.check_output() 這些新方法采用一個可選的env參數,該參數是環境變量名稱和值的決定。 您可以在那里傳遞任何您需要的東西。

或者,如果您真的想在外部設置變量並使它們“粘貼”在子export myvarname在運行Python之前export它們export到shell中( export myvarname )。

popen(3) (在Python os.popen中 )從未運行相同的 shell,而是派生了一個新的shell。

暫無
暫無

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

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