2012-09-09 63 views
2

我使用的是virtualenv(它設置了一些環境變量)。現在,我想生成一個具有相同環境的新終端窗口。如果我嘗試:如何在相同的環境下產生新的xterm

xterm & 

我得到一個新的終端,但環境是默認的環境,那就是當我進入新的終端上以下行:

pserve --reload development.ini 

我得到:

>> pserve: Command not found. 

在另一方面,如果我執行:

xterm -e pserve --reload development.ini & 

它打開一個運行pserve的新終端。所以,我的問題是:

  1. 如何一般打開一個新的終端使用相同的環境
  2. 新的終端如何才能找到pserve當我-e開關運行呢?
+0

這個問題不應該超級用戶嗎? – m4tx

+0

@ m4tx - 我也不太確定 - 因爲這與'virtualenv'和使用'Pyramids'和'Python'開發網絡應用程序非常相關 - 歡迎您登錄 - 也許mods會決定移動它 – zenpoy

回答

3

要回答你的第一個問題,一個快速而骯髒的方法是使用sh內建'set'命令(更多參見'help set')。

從老貝:

set > ~/env.tmp 

然後

xterm & 

在新的外殼:

. ~/env.tmp && rm ~/env.tmp 

您可能希望在腳本包這件事或添加一對夫婦你的'bash.rc'中的函數。您可能還想使用'mktemp(1)'或類似的。

+0

This如果你在機器上有管理權限,可能會有效,我不......「。 〜/ env.tmp && rm〜/ env.tmp'給我'Permission denied' – zenpoy

+0

我已經用受限用戶在本地測試過了,並且工作正常。你能擴展出路徑,還是使用/ tmp作爲.tmp文件? – dmp

+0

我認爲'.'給了我''拒絕的權限'' - 我正在使用某種Debian發行版'3.0.3-aufs-mos-2'。這對你有意義嗎? – zenpoy

1

在從@dmp我加入到諮詢我的〜/ .bashrc如下:

# save the environment, apart from readonly variables that can not be restored 
alias cloneterm='set |egrep -v "^(BASHOPTS|BASH_COMPLETION_COMPAT_DIR|BASH_VERSINFO|EUID|PPID|SHELLOPTS|UID)=" > /tmp/env.tmp && $TERM &' 
# restore a previously saved environment, if any 
[ -f /tmp/env.tmp ] && source /tmp/env.tmp 
[ -f /tmp/env.tmp ] && rm /tmp/env.tmp 

現在,我可以簡單地運行

$ cloneterm 

,我得到一個新的終端窗口,與同樣的環境

希望這有助於

注:

  • 這是慶典專用,但應該工作tith其他終端太(甚至F I只測試了它的xterm)
  • 這可能會破壞在多用戶系統,但足以滿足臺式機/筆記本電腦的配置
  • 更多