[debian-users 00107] Re: stretchで日本語入力できない
KISE Hiroshi
kise @ fuyuneko.jp
2017年 7月 23日 (日) 20:41:11 JST
全然Debian特有ではないです。
From: Kenji Matsui <kmatsui @ earth.kiramori.net>
Subject: [debian-users 00105] Re: stretchで日本語入力できない
Date: Sun, 23 Jul 2017 08:23:29 +0000
> なぜ sudo では内部コマンドが実行できないのかなと疑問に感じたのですが
> ルート権限でしか実行できないコマンドのみ sudo で実行しなさい、
> というようなことでしょうか。
ちょっと違います。
「ルート権限で実行したいコマンドだけを sudo で実行しなさい」
でしょう。rootだって普通のことがしたいときもあるのです。
> なぜ sudo では内部コマンドが実行できないのかなと疑問に感じたのですが
内部コマンドは、実行しているシェルに対する命令です。
ですので、sudoで実行するのは意味不明です。
ということで、sudoでbashを起動して、それで実行すればOK。
(以下、cdするディレクトリに意味はありません)
$ cd /tmp
$ sudo bash -c 'cd /; pwd'
/
もちろん、子プロセスでのシェル操作は親プロセスには影響しませんので…。
$ cd /tmp
$ sudo bash -c 'cd /; pwd'
/
$ pwd
/tmp
といった感じ。加えて、子プロセスは実行終了すると消えてしまいます。
次のsudoに引き継がれません。
$ cd /tmp
$ sudo bash -c 'pwd'
/tmp
$ sudo bash -c 'cd /; pwd'
/
$ sudo bash -c 'pwd'
/tmp
どうすればいいか。1回のsudoで一気に実行すればいいわけです。
つまり、一連の手順をシェルスクリプトにして、それをsudoで実行する、と。
そうすれば、シェルスクリプト内に書いたcdもsourceも、環境変数の変更も、
ちゃんと動きます。
余談。pwdですが、bashは内部コマンドで持っていますが、/bin/pwdも
あります。
--
喜瀬“冬猫”浩
debian-users メーリングリストの案内