[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 メーリングリストの案内