$ source /etc/environment
$ sudo source /etc/environment
[sudo] password for t:
sudo: source: command not found
bash
実行中のシェルが実行中のシェルと異なるように見え、そのシェルの組み込み機能はsource /etc/environment
ありません。source
しかし、私とルートのデフォルトシェルは両方ありますbash
。
$ echo $SHELL
/bin/bash
sudo
別のシェルを使用している場合、その理由は何ですか?私は見たslmの返信しかし、私の場合は理解できません。
ベストアンサー1
source
シェル組み込み関数なので、シェルがなければ実行できません。ただし、シェルはデフォルトでは実行されませんsudo
。 ~からsudo
プロセスモデル
sudoは、コマンドを実行するときにfork(2)を呼び出し、上記のように実行環境を設定し、サブプロセスでexecveシステムコールを呼び出します。
シェルを明示的に実行するには、-s
次のオプションを使用します。
# sudo -s source /etc/environment
シェルを終了すると、環境の変更が失われるため、まだ機能しません。