10

特定のプロジェクトでの開発用にセットアップするために使用できる .screenrc ファイルを作成しようとしています - いくつかの画面を開始し、適切な場所に移動し、エディターで適切なファイルを開き、いくつかを設定しますテストに必要な環境変数。

環境設定を機能させることができません..これを入れてみました`~/.screenrc

setenv PATH ~/src/my_proj/bin/:$PATH

screenこれは機能しません。問題は、 setsの後PATH、通常のシェル初期化スクリプトが起動して変更されることだと思います。

通常のシェルの初期化スクリプトを無効にしたくありません。シェルの初期化setenv に画面を作成する方法はありますか? または、スクリーンで変数を読み取り専用に設定できますか?

4

4 に答える 4

6

代わりに、いくつかのbashマジックでそれを行います。次のようなものを~/.screenrcファイルに追加してみてください。

screen -t "window" bash -ic 'PATH=~/src/my_proj/bin/:$PATH bash'

詳細については、新しく作成されたウィンドウにこの設定を使用するCtrl-a Ctrl+cCtrl-a c、別の投稿への回答を参照してください: https://stackoverflow.com/a/21717641/1413849

于 2014-02-12T03:04:55.923 に答える
3

screenシェル プロセスが起動すると、その環境変数を変更する方法はありません。また、環境変数を読み取り専用にする方法もありません (値は各プロセスのメモリに保存され、各プロセスはそれらに完全にアクセスできます) 。.

(システム固有の醜い方法がいくつかあるかもしれませんが、それは、Unix のようなシステムが、ユーザーが実行できないように設計されているようなものです。)

$PATH既存の値を無視して新しい値に設定するのではなく、既存の値を保持するようにシェルの初期化スクリプトを変更する必要があります。

これを条件付きで行いたい場合は、 の存在をテストできます$STY。これは、シェル (または他のプロセス) が で実行されている場合にのみ設定されscreenます。

また、screenのコマンドは文字setenvを認識しないようです。一時的な に~似たものを追加しようとしましたが、リテラル文字が含まれていました。の構文を認識するようですが、他のシェルは認識しません。をに置き換えます。これは認識します。setenvscreenrc$PATH~bash~$PATH~$HOMEscreen

于 2014-02-11T15:28:19.923 に答える