[debian-users 00109] Re: stretchで日本語入力できない

Kenji Matsui kmatsui @ earth.kiramori.net
2017年 7月 27日 (木) 06:50:29 JST


おかげさまで勉強になりました。

---
Kenji Matsui


On 2017年07月23日 20:41, KISE Hiroshi wrote:
> 全然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 メーリングリストの案内