2

私は使用してvirtualenvいます(いくつかの環境変数を設定します)。ここで、同じ環境を持つ新しいターミナル ウィンドウを生成したいと考えています。私が試してみると:

xterm &

新しい端末を取得しましたが、環境はデフォルトの環境です。つまり、新しい端末で次の行を入力したときです。

pserve --reload development.ini

私は得る:

>> pserve: Command not found.

一方、実行すると:

xterm -e pserve --reload development.ini &

pserve を実行する新しいターミナルを開きます。だから、私の質問は次のとおりです。

  1. 一般的に同じ環境で新しい端末を開く方法
  2. スイッチpserveで実行すると、新しいターミナルはどのように見つけることができますか?-e
4

2 に答える 2

4

最初の質問に答えるには、shビルトインの「set」コマンドを使用するのが手っ取り早い方法です(詳細は「helpset」を参照してください)。

古いシェルから:

set > ~/env.tmp

それで

xterm &

新しいシェルから:

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

これをスクリプトでまとめるか、「bash.rc」にいくつかの関数を追加することをお勧めします。'mktemp(1)'などを使用することもできます。

于 2012-09-09T12:00:43.483 に答える
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

同じ環境で新しいターミナル ウィンドウが表示されます

お役に立てれば

ノート:

  • これはbashのみですが、他の端末でも動作するはずです(xtermでのみテストした場合でも)
  • これはマルチユーザー システムでは壊れる可能性がありますが、デスクトップ/ラップトップ構成では十分です。
于 2013-03-20T10:35:44.187 に答える