松井です。
親プロセスと子プロセス、 内部コマンド(組み込み関数)と外部コマンドについて、 調べてみてある程度理解できました。 cd なんかも source と同じ結果になりますね。
$ type cd cd はシェル組み込み関数です $ sudo cd sudo: cd: コマンドが見つかりません
なぜ sudo では内部コマンドが実行できないのかなと疑問に感じたのですが ルート権限でしか実行できないコマンドのみ sudo で実行しなさい、 というようなことでしょうか。 何にせよ、おかげさまで勉強になりました。
--- Kenji Matsui
Quoting Kazuhiro NISHIYAMA zn@mbf.nifty.com:
西山和広です。
On Wed, 19 Jul 2017 18:17:38 +0900, Kenji Matsui wrote:
ルートユーザーとしてデスクップにログインしますと
(略)
root で入ると正常に見えるということは既存のユーザーの $HOME 以下に 何か英語環境にする設定が入ってしまっている気がするので、新規ユーザーを 作って試してみるとどうなるのかが気になりました。
$ sudo bash /etc/default/locale
これは root 権限の bash で /etc/default/locale を実行して 終了しているだけで、他のプロセス (親プロセスとか) には 何も影響しないので、意味がないのではないでしょうか。
環境変数というのは親プロセスから子プロセスに継承されるだけで 子プロセスでの環境変数の変更は親プロセスには影響しないので、 後で locale コマンドを実行しても何も変わらないのは、 何もおかしいところはないと思います。
(ちなみに、一般ユーザーではbashだとうまくいきますがsourceだと $ sudo source /etc/default/locale sudo: source: コマンドが見つかりません となってしまいます。何なんでしょう、これ?)
source という外部コマンドは存在しないからではないでしょうか。
現在のシェルに変数設定を反映したいのなら、普通にドットコマンドなどを
$ . /etc/default/locale
か
$ source /etc/default/locale
のように使えば良いと思います。
-- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA) _______________________________________________ debian-users mailing list debian-users@debian.or.jp http://lists.debian.or.jp/mailman/listinfo/debian-users