環境変数が設定されていますが、尊重されません。

環境変数が設定されていますが、尊重されません。

次の動作が少し混乱していると思います。なぜこれが起こるのかを説明できますか?

私は/etc/bash.bashrc以下を持っています:

EDITOR=vim

もちろん:

lev@home ~ $ echo $EDITOR
vim

私はそれを尊重したいですvisudo。今、man visudo私はこの変数が常に尊重されるわけではないことを読んでいますが、なぜそれが他の結果をもたらすのかを理解していません。

$ sudo visudo # opens vi
$ sudo EDITOR=vim visudo # opens vim

このEDITOR変数はルート(AFAIU)にも設定する必要があります。

$ sudo echo $EDITOR
vim

また、(私はArch Linuxを使用しています)をAUR使用してパッケージをインストールし、yaourtPKGBUILDファイルを編集することを選択すると、次のようになります。

Please add $EDITOR to your environment variables
for example:
export EDITOR="vim" (in ~/.bashrc)
(replace vim with your favorite editor)

==> Edit PKGBUILD with:

したがって、問題はvisudo.変数セットを見ることができますが、プログラムが表示されないのはなぜですか(コマンドで再度指定しない限り)。

技術的な情報:

lev@home ~ $ uname -a
Linux home 3.6.9-1-ARCH #1 SMP PREEMPT Tue Dec 4 08:04:10 CET 2012 x86_64 GNU/Linux
lev@home ~ $ bash --version | head -1
GNU bash, version 4.2.39(2)-release (x86_64-unknown-linux-gnu)

答え1

設定しましたがエクスポートされませんでした。行を次に変更します。

export EDITOR=vim

答え2

Chrisの答えに従って、変数を子プロセスのデフォルト環境にエクスポートしてから、現在の環境を保存するようにsudoに指示する必要があります。これは-E環境全体を保存するsudoオプションを介して行うことができますEDITORenv_keep

関連情報