質問: 一部のコマンドをsudoできないのはなぜですか? (例:vim) centos-6.3を実行しているフレンドサーバーにsudoアクセスがありますが、_sudo vim /var/www/html/index.html_などのコマンドを実行しようとすると、エラーが発生します_sudo: vim: command not found_ただし、_sudo su_を実行してから、 _vim /var/www/html/index.html_と期待どおりに動作します。_echo $path_と_sudo echo $path_の両方が生成されます:_/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jared/bin __sudo which vim_ただし、次の結果になります。_which: no vim in (/sbin:/bin:/usr/sbin:/usr/bin) _追加してみました_export path=$path:/usr/local/bin __/root/.bashrc_ではなく_sudo su_を使用する場合の問題を修正した_sudo <command>_に。_sudo <command>_を機能させるにはどうすればよいですか?
回答: sudo echo $path あなたが思うことをしません。 $pathは(お使いの)シェルに置き換えられますbeforeコマンドを実行します。目的の動作を実現するには、sudo -iを使用できます。から man sudo : -i [コマンド] -i(simulate initial login)オプションは、passwdで指定されたシェルを実行します(5)ログインシェルとしてのターゲットユーザーのエントリ。これは、.profileや.loginなどのログイン固有のリソースファイルがシェルによって読み取られることを意味します。コマンドが指定されている場合、コマンドはシェルに渡されて実行されます。