sudoing時にvimをデフォルトエディタに設定するには?

sudoing時にvimをデフォルトエディタに設定するには?

私はCentOS 5.9システムで作業しており、入力したいだけです。

sudo vi 一部のファイル

そして信頼できるvimにフレーズを強調するようにしましょう。これは簡単に見えますが、何度も試してもまだ機能しません。

root@localhost> which vi
alias vi='vim'
        /usr/bin/vim
root@localhost> sudo which vi
/bin/vi
root@localhost> sudo -i which vi
/bin/vi
root@localhost> sudo -E which vi
/bin/vi

vimがデフォルトで呼び出されることを確認するためにrootとしてログインしましたvi somefile。それをしました。また、環境を保存するために-Eを使用し、ログインスクリプトを実行するために-iを試しました。それは無駄です。私の.profileと/etc/environmentでエディタをvimにエクスポートし、viをvimのエイリアスに設定しました。

また、/etc/sudoersのenv_reset行をコメントアウトしました。

また何を試すべきですか? viをvimに変えるのはこれほど難しいとは思わなかったし、ここで何が起こっているのか本当に知りたいです。

答え1

これがこのコマンドsudoeditの目的です。環境で編集できるように一時コピーを作成します。適切なバイナリを見つけるためにSUDO_EDITORVISUALおよび変数を検索します。EDITOR編集後、コピーは元のファイルを上書きします。

答え2

vim代わりに常に使用したい場合は、次のことがviできます。

$ sudo ln -s /usr/bin/vim /usr/local/bin/vi

(これはあなたが持っていると仮定します/usr/local/bin 今後 /binあなたのPATH。 )

もちろん、これは(システムローカル)ハッキングですが、非常にシンプルで効果的です。

答え3

私は、観察された動作の原因をPATH変数で見つけることができると思います。一般ログインユーザーとして、セグメントは/usr/bin以前に存在する可能性/binがありますが、、セグメントが/bin前にあります/usr/bin

その場合、違いは次のソースのいずれかまたは両方で追跡できます。使用時にPATH値が異なる場合Sudo、これは以下を指す。安全な道構成パラメータは通常、/etc/sudoersファイルまたはファイルのいずれかに設定されます/etc/sudoers.d/*。ただし、ログイン時にPATH値が異なる場合(一次ログインか、それともSudo-i/スイッチ)--loginなどの起動ファイルを指します。/etc/{profile,profile.d/*}/etc/{bashrc,bash_*}

CentOS 5はインストールされていませんが、Alma 8サーバーは次の情報を提供します。

## As a regular logged-in user
$ echo $PATH
/home/me/.local/bin:/home/me/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

## Sudoing as root (notice the reverse order)
$ sudo bash -c 'echo $PATH'           
/sbin:/bin:/usr/sbin:/usr/bin

## Sudoing as myself (same value)
$ sudo -u me bash -c 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin

## Indeed...
$ sudo grep secure_path /etc/sudoers
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

すばやく見ることができますSudo~の環境を維持パラメータを追加し、VISUALとEDITORがまだ存在しない場合は、予約変数リストに追加しますが、前述の後環境リセットオフにすると大きな変化はありません。

関連情報