現在の端末を複製する新しい端末を作成できますか?

現在の端末を複製する新しい端末を作成できますか?

私は/asdf/qwer/dfgh/wert/asdf/qwerディレクトリでコードを開発しており、私のパスに約3つの同様のディレクトリを追加し、いくつかの不明な環境変数を設定したとします。その後、別の端末を開き、同じ方法で設定する必要があることに気づきました。 (必要が再び発生しなかったので、単に.bashrcを変更しました。)これと同じ新しいターミナルウィンドウを開くコマンドはありますか?

ベストアンサー1

コマンドラインからターミナルプログラムを実行できる場合は、パスを簡単に複製できます。を使用していると仮定すると、複製したい端末のプロンプトで実行xtermできます。xterm &新しい xterm は、ログインシェルで起動するように設定しない限り、同じディレクトリから起動されます。エクスポートされた環境変数もすべて保持されますが、エクスポートされていない変数は保持されません。

環境全体(エクスポートされていない変数を含む)を複製するための迅速で汚い方法は次のとおりです。

# from the old shell:
set >~/environment.tmp

# from the new shell:
. ~/environment.tmp
rm ~/environment.tmp

カスタムシェルオプションを設定した場合は、そのオプションも再適用する必要があります。

プロセス全体を実行しやすいスクリプトにラップできます。スクリプトが環境を既知のファイルに保存して実行するようにしますxterm。 .bashrcでそのファイルを確認してインポートし、見つかったら削除します。


あるいは、ある端末を別の端末から起動したくない場合、またはさらに制御したい場合は、.bashrcで定義されている関数のペアを使用できます。

putstate () {
    declare +x >~/environment.tmp
    declare -x >>~/environment.tmp
    echo cd "$PWD" >>~/environment.tmp
}

getstate () {
    . ~/environment.tmp
}

編集するputstate他の方法と一致するように、シェル変数の「エクスポートされた」状態をコピーするように変更されました。シェルオプション(参考資料を参照)などの他の項目をコピーすることも可能であるため、help setこのスクリプトには改善の余地があります。

おすすめ記事