次の動作が少し混乱していると思います。なぜこれが起こるのかを説明できますか?
私は/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
使用してパッケージをインストールし、yaourt
PKGBUILDファイルを編集することを選択すると、次のようになります。
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オプションを介して行うことができますEDITOR
。env_keep