環境変数の参照

パピーリナックスを初めて使う方もご利用ください

モデレータ: 暇人, YoN, nyu

返信する
kukulu
記事: 12
登録日時: 11/03/08(火) 13:57

環境変数の参照

投稿記事 by kukulu »

こんにちわ。
ものすごくどうでもいいことかもしれませんが、教えてください。

以下の操作を行ないます。
1.~/.bashrc に環境変数の設定を行なう ( export aaa=123 など)
2."端末"を立ち上げて、環境変数を参照する
-> 成功する ( echo $aaa で 123 と表示される)
3.上記の環境変数を参照するだけのシェルスクリプトを作成する ( echo $aaa > ./a.txt みたいに )
4.コマンドラインから上記のシェルスクリプトを実行する
-> ./a.txt に 123 と記述されている
5.GUI 上から、3 のシェルスクリプトのファイルをクリックして実行する
-> ./a.txt に 123 と記述されていない (ファイル自体は更新されているのでパス違いなどではありません)

~/.bashrc による設定が"端末"を通さないと有効にならないのかとも思い、
/usr/local/apps/Terminal の中を参考にシェルを書き換えてもみたのですが変化はありませんでした。

GUI から直接クリックする方法で環境変数を有効に参照することは出来ないのでしょうか?
※特に困っているなどというのではなく、単純な興味からの質問です
nonki3476
記事: 61
登録日時: 10/06/28(月) 13:52

Re: 環境変数の参照

投稿記事 by nonki3476 »

5.GUI 上から、3 のシェルスクリプトのファイルをクリックして実行する
-> ./a.txt に 123 と記述されていない (ファイル自体は更新されているのでパス違いなどではありません)
シェルスクリプトファイルにはシェルスクリプトとなるお呪いがテキストファイルの1行目に
なければなりません。
ディストリビュションによっては省略できるようですがPuppyでは出来ないようです。

コード: 全て選択

#!/bin/sh            : スクリプトになるお呪い
aaa=123              : 環境変数の設定
echo $aaa > ./a.txt  : 環境変数をテキストファイルに書き出し
スクリプトファイル作成後端末にて
# chmod +x ./a.txt
: a.txtに実行属性を付与する。
: a.txtファイル・ダブルクリックで動作させるために必要になります
: 実行属性を付与しないでスクリプトを実行するには
: sh a.txt とする。

「参考文献」
シェルスクリプトの作り方(1/8)
http://merry.whitesnow.jp/SEMICMD/SECTI ... on6_1.html
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 環境変数の参照

投稿記事 by シノバー »

kukulu さんが書きました:1.~/.bashrc に環境変数の設定を行なう ( export aaa=123 など)
その後 Xは再起動されました?
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
アバター
暇人
記事: 2392
登録日時: 07/08/12(日) 23:33
お住まい: 埼玉県xx市並4
連絡する:

Re: 環境変数の参照

投稿記事 by 暇人 »

1〜5がX上でのことという前提で。

ある(仮想)端末の中で環境変数を設定したとして、
既に起動しているGUI(rox)からシェルスクリプトを実行した場合、
そのシェルスクリプトが参照している環境変数は前記の(仮想)端末の中のものではなく、
GUI(rox)が動いているシェル(X起動時)の環境変数なので、そのような結果になる。

と言うことではないか?

環境変数を設定した(仮想)端末からGUI(rox)を起動してその中で5を
実行すれば期待した結果が得られるはず。
管理人見習い
NEC Express5800 S70/SR G6950 2.8GHz/1G
lenovo S10-3 AtomN450 1.66G/1G
暇人/貳馬力/2CV
kukulu
記事: 12
登録日時: 11/03/08(火) 13:57

Re: 環境変数の参照

投稿記事 by kukulu »

nonki3476さん、シノバー さん、暇人さん、返信をありがとうございます。
対応が遅くなり申し訳ありません。

説明が不足していたようですので、追加の説明です。
・作成したシェルの冒頭部分には #!/bin/sh を挿入しています
・操作は Puppy を起動して X 上からテキストエディタや"端末"を操作して行なっていました

ということなので、nonki3476さんのご指摘は残念ながら当てはまらないものと思います。
ただ例示いただいたシェルについては、基本的に同一なのですが
aaa に値を設定する部分は .bashrc にて export 付きで行なっておりこの部分だけが異なっていました。

シノバーさんと暇人さんのご指摘は本質的には同一のものと考えますが、誤りはないでしょうか。
ご指摘をいただいた後、念のために X の再起動と、システムそのものの再起動を試しましたが
結果は変わりませんでした。
また、以下のことも試してみましたが、同様でした。
6. xterm を立ち上げるだけの b.sh を作成し、これを X 上からクリックしてコマンドラインを表示する
7. コマンドラインから aaa を参照する。あるいは 3 のシェルを実行する。
-> 成功する( 123 と表示される)
8. xterm を立ち上げて 3 のシェルを呼び出す b.sh を作成し、これを X 上からクリックして実行する
( xterm -e ./a.sh のような感じ )
-> 失敗する( 123 と表示されない)

またコンパイルのときのような基本的な勘違いをしていそうな気がしてきました。
ちょっと頭を冷やして考えてみます。
ありがとうございました。
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 環境変数の参照

投稿記事 by シノバー »

どうもX起動のさいは /root/.bashrc は参照されないようですね。
Xとウィンドウマネージャーの起動時は /etc/profile と /etc/profile.dにあるものと /root/.xinitrc だけが使われるようです。
メニューからの起動を含めた全般に環境変数を設定したいときは /etc/profile.d 内にファイルを作り、そこに記述するのが正解みたいです。
参考(Waryの場合):/etc/profile.d/seamonkey など。
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
kukulu
記事: 12
登録日時: 11/03/08(火) 13:57

Re: 環境変数の参照

投稿記事 by kukulu »

シノバーさん、返信をありがとうございます。

なるほど。納得しました。
自分だけで探してたら一生行き着かなかったかも。。。w
やっぱり奥が深いですね。
返信する