ESの環境をどのように設定しますか?


10

私はここ数日、esを使って遊んでいますが、(rcのように.esrc)ログイン時に起動スクリプト()のみを実行するという癖/機能があります。各対話型セッションでコードを実行する通常の方法は、そのコードを%prompt関数に配置することです。

もちろん、一度も実行されていない%prompt場合、機能es -lはありません。

それで、質問:.profile(または.xprofile、.xsessionなど)のみをソースする、gdmまたは同様のものを介して入ってくるときのログイン環境をどのように設定しますか?私が思いついた最高のものは:

if [ -f "$HOME/.esrc" ]; then
    eval "`es -l <<-x
        sh <<<'export -p'
    x`"
fi

それは...恐ろしいようです。より良いアプローチはありますか?


それesはあなたのログインシェルではありません。設定についてalias es='es -l'.bashrcどうですか?
cjm 2012

esログインシェルです。はっきりしないと申し訳ありません。しかし、少なくとも私が知る限り、ターミナルが起動する前のXセッションではログインシェルは実行されません。
james.haggerty 2012

私は使用しますがbash、使用しませんes。しかし、新しいターミナルウィンドウを開くbashと、ログインシェルとして実行されます。
cjm 2012

少なくともほとんどのX端末では、これはデフォルトで無効になっているオプションです(本来はIMO)。だから、はい、それは回避策ですが、これを一度実行できるときに複数回実行する必要がある理由はありません。
james.haggerty 2012

うーん、私はあなたの編集に同意するかわかりません、ジル。なぜこれがesにのみ当てはまると思いますか?(* cshまたはrcまたは...ではありません。)そして、gdmとlightdmを削除します。環境を制御するものだからです。
james.haggerty 2012

回答:


1

誰も本当の答えはないので、これが私の恐ろしいハックです。一部のシェル(* rxvtなど)には、ログインシェルを強制的に実行できる設定があります。したがって、で、.Xdefaults似たものを追加できます

urxvt256c-ml:loginShell: true

つまり、urxvt256c-ml起動するすべての端末には、デフォルトでログインシェルがあります。

それはまったく役に立ちますか?


さて、迷惑な人であること(上記のコメントを参照してください?)、私はこれについてすでに知っていると言います。このコードと少し気になるコードのどちらが優れたオプションであるかは簡単ではありません。1つは概念的な優雅さを欠いています(1つの実際のログインで100を作成すると、すべての端末にログインすると主張しています)、もう1つは実装の優雅さを欠いています(ただし、ログイン時に環境セットアップする必要があると実感しています)。
james.haggerty 2012

ああ、私はあなたが今何を言っているのか分かります。個人的には、ターミナルはX11環境ではなくログインの単位であると考えているため、3つのターミナルを開いている場合は3回ログインするのが理にかなっています。他の人に役立つ場合に備えて、ここでは答えを残します-反対票がいくつ引き寄せられるか見てみましょう。^ _〜
Sardathrion - SEに対する虐待は、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.