21758


普段 tcsh を使用しており、環境変数等の設定は ~/.cshrc で行っています。  
lxdm を使うにあたり、環境変数の設定は ~/.xprofile で行うもののようですが、.cshrc と .xprofile
と設定を二重に持ちたくはないので、.xprofile から .cshrc を読み込み、なんとかしたいと考えています。

で、作ったのが以下の .xprofile です。

[code]

    tmp=/tmp/xprofile.$$
    tcsh -c 'source ~/.cshrc; env' | sed -e 's/^\([^=]*\)=\(.*\)$/export \1="\2"/' > $tmp
    
    . $tmp
    
    rm $tmp
    
[/code]

一応動いてはいるようです。  
中には値に「;」が含まれているものもありますので、「"\2"」と quote しています。  
しかしそれでも、値に「"」が含まれていると誤動作すると思われ、完璧ではありません。

完璧にする方法、または全く違う方法をご存じの方、いらっしゃったら教えて下さい。

よろしくお願いします。


CC BY-SA 3.0
2016-02-05T15:01:47.937
21754
2016-02-05T23:02:58.717
5288
question
linux bash
.cshrc で設定した環境変数を .xprofile に引き継ぎたい


argus さんのコメントの方法が完璧でした。  
.xprofile 中で `. <()` の書き方ができないようでしたので、今回は `eval $()` の方でやりました。

[code]

    eval $(tcsh -c 'source ~/.cshrc; printenv' | sed "s/'/'\\\\''/g;s/^.*$/export \$'&'/")
    
[/code]

回答ありがとうございました。


CC BY-SA 3.0
2016-02-05T22:51:16.993
21758
2016-02-05T23:02:58.717
2016-02-05T23:02:58.717
5288
5288
21754
answer