画面 - 現在のウィンドウのコンテキストを継承します。

画面 - 現在のウィンドウのコンテキストを継承します。

GNU画面で、現在のウィンドウのシェル環境を継承するシェルを持つ新しいウィンドウをどのように作成しますか?

一般的なCtrl+はA Cこれをしないようです。

答え1

1つの画面(bashの実行など)で環境変数を設定してから新しい画面を開くと、これは別のbashプロセスであるため、すでに実行されている別のbashシェルから環境を選択しません。この問題に対する迅速な解決策は次のとおりです。

env TERMCAP= env | sed -r 's/^(\w+)=(.*)$/\1="\2"/' > env.sh

その後、Ctrlac新しいシェルを取得する必要がある場合は、単に行うことができます

source env.sh

env TERMCAP= envTERMCAP環境変数が複数減り、状況がより複雑になるため、これを使用していますsed。きれいではありませんが、動作します:)

次のように変更できます。

env TERMCAP= env | sed -r 's/^(\w+)=(.*)$/export \1="\2"/' > env.sh

したがって、変数もエクスポートされます。

答え2

示されているようにエクスポートされた変数envは新しいscreen

ただし、起動前にシェルで定義されているがまだscreenエクスポートされていないローカル変数は、screenセッションには存在しません。

変数名をどのように指定したかに応じて、Bashで次のようなものを使用して読みやすいリストを取得できます。

(set -o posix ; set) | egrep -v '^(_.*|[A-Z0-9_]+)='

setまた、独自に多数の機能を一覧表示します。

(set -o posix ; set)変数だけがリストされますが、リストにはシステム変数がたくさんあります。

egrep -v '^(_.*|[A-Z0-9_]+)='名前がアンダースコアで始まるすべての変数と、大文字、数字、アンダースコアのみを含むすべての変数をフィルタリングします。これにより、ほとんどのシステム変数が削除されます。

したがって、リストは、小文字(アンダースコアと数字を含む)も(または単に)使用する変数に制限されます。これで、スタート画面の前に、そのリストから目的のアイテムをコピーして貼り付けることができます。

もちろん、これはエクスポートするのを忘れた変数が多い場合にのみ役立ちますが、画面を起動する前に変数を確認することを確認してください。

関連情報