__vi_internal_vim_alias 回避策: コマンドが見つかりませんか?

__vi_internal_vim_alias 回避策: コマンドが見つかりませんか?

最近、私のコンピュータをFedora 33(Linux 5.9.16-200)にアップグレードしました。私はvim Enhancedバージョン8.2を実行しています。管理者権限でファイルを編集しようとするとsudo vim(も)入力すると、sudo vi次のエラーが発生します。

sudo: __vi_internal_vim_alias: command not found

この問題の原因が何であるかよくわかりません。 Vimはsudoなしで正常にロードされます。この問題を解決する方法を教えてください。ありがとうございます。


修正する: を実行した後、which vim次のような結果が得られます。

alias vim='__vi_internal_vim_alias'
    __vi_internal_vim_alias ()
    { 
        ( test -f /usr/bin/vim && exec /usr/bin/vim "$@";
        test -f /usr/bin/vi && exec /usr/bin/vi "$@" )
    }

これが何をしているのか、どこで起こったのかよくわかりません。たぶんこれはFedora 33の問題かもしれません。上記の情報を考慮して、永久修正として何をお勧めしますか?

答え1

Fedora 33でも同じ問題が発生しました。これはsudo私の環境で定義されているエイリアスによるものです。

$ alias sudo
alias sudo='\sudo '

したがって、bashは、sudo次の例のように、エイリアスに引数として渡されたエイリアスを何らかの方法で確認します。

$ alias foo='echo foo'
$ sudo foo
foo

私はこれが欲しかったです:

$ sudo foo
$ sudo: foo: command not found

このエイリアスを削除すると私に役立ちました。このエイリアスは/usr/local/bin/alias.shプロジェクトsynth-shellhttps://github.com/andresgongora/synth-shell)

答え2

@scyが述べたように、viとvimのエイリアスを解放することは、sudo = "sudo"エイリアスを維持して他のエイリアスと一緒に使用できるソリューションです。

他のシェルへの回答を拡張すると、次のようになります。

ZSHシェル:に追加する.zshrcファイル(変更の影響を受けるユーザーのファイル)

  • うそ:

Fedora 33ワークステーション(またはサーバーまたは他の非原子的OSディストリビューション)の場合: /home/$USER/.zshrc

Fedora CoreOS 33.x(またはSilverblue 33などのAtomic OSディストリビューション)の場合: /var/home/$USER/.zshrc

  • 次のコード行:
[ "$(type -w vi)" = 'vi: alias' ] && unalias vi
[ "$(type -w vim)" = 'vim: alias' ] && unalias vim

バッシュシェル:に追加する.bashrcファイル(変更の影響を受けるユーザーのファイル)

  • $USER ホームディレクトリに対応する OS/Distro の特定の場所にそれぞれ配置します (Fedora Workstation の指示の確認など...)。
  • 以下のコード:
[ "$(type -t vi)" = 'alias' ] && unalias vi
[ "$(type -t vim)" = 'alias' ] && unalias vim

ポリスチレン~についてZSHシェルこのソリューションは、同様の初期化状況で他のCLIアプリケーションに関連する同様の問題を解決できます。たとえば、MC(真夜中司令官)。同時に、MCそのような問題はないでしょう。バッシュシェル

関連情報