コマンドが見つかりませんエラー - bash

コマンドが見つかりませんエラー - bash
$ which sudo emacs
  /usr/bin/sudo
  /home/user1/local_build/bin/emacs
$ sudo emacs /etc/apache2/sites-available/000-default.conf 
  sudo: emacs: command not found
$ emacs /etc/apache2/sites-available/000-default.conf # Works fine
$ which emacs
  /home/user1/local_build/bin/emacs
$

編集する:

ちょうどユーザーのPATHために添付しました。root

$ whoami
 user1
$ which emacs
 /home/user1/local_build/bin/emacs
$ sudo tail -n 2 -F /root/.bashrc
 #fi
 export PATH=/home/user1/local_build/bin:$PATH
$ 
$ sudo emacs /etc/apache2/sites-available/000-default.conf
 sudo: emacs: command not found
$ 

編集する:

# whoami
 root
# command -v emacs
 /home/user1/local_build/bin/emacs
# exit
 exit
$ whoami
 user1
$ command -v emacs
 alias emacs='emacs -q --load ~/.emacs.d/init.el'
$

編集する

$ whoami
 user1
$ tail -n 2 -F .bashrc
 alias emacs='emacs -q --load ~/.emacs.d/init.el'

^C
$

編集する:

Tiggerの答えの後でも問題はまだ存在します。

$ tail -n 2 -F /home/user1/.bashrc
# alias emacs='emacs -q --load ~/.emacs.d/init.el'

^C
$ whoami # After logout/login bash
 user1
$ sudo emacs /etc/apache2/sites-available/000-default.conf
 sudo: emacs: command not found
$

編集する:

7_R3Xが応答した後、

# whoami
 root
# ls -ltr /etc/sudoers #Unable to modify this file
 -r--r----- 1 root root 755 Oct 14  2016 /etc/sudoers
# 

ところで、sudo gedit <etc's filename>うまくいきます。

質問:

なぜemacsstartを使用できないのですsudoか?

答え1

cylgaladがコメントで言及したエラーの原因は、その/home/user1/local_build/binパスがルートのシステム変数に存在しないためですPATH

問題の原因は、/home/user1/local_build/bin変数にディレクトリが存在しないためですsecure_path。このディレクトリを追加するには、ファイルを編集してsecure_path基本/etc/sudoersコンテンツの内容を変更する必要があります。

または、

この問題を解決するには、コマンドで完全パスを明示的に参照してemacsを実行できます。

sudo /home/user1/local_build/bin/emacs /etc/apache2/sites-available/000-default.conf

または代替的に

/home/user1/local_build/bin/ルートにパスを追加できます。ディレクトリ内のファイルPATHに次の行を入れます。.bashrc~/root/

PATH=$PATH:~/home/user1/local_build/bin

説明に記載されているSteeldriverの理由から、ルートにディレクトリを追加してもPATH機能しません。

答え2

古典的な例なぜ使用しないのですか?which

問題の中心はですwhich。その内容type emacsや内容を確認するとcommand -v emacs問題が解決します。

編集:ユーザーとして実行しようとすると、root次のことが発生します。

su
<password>
command -v emacs

編集2:これがalias問題です。ユーザーまたは~/.bashrc確認する必要があります。私の提案は~/.profileそれを修正するか、新しいものを作ることです。alias

編集3:emacsつまり、ユーザーフォルダにインストールしてからroot

オプション1

設置emacs場所/usr/local/bin- 正しい場所。アクセス可能なアプリケーションを保存するためにユーザーフォルダを使用しないでくださいroot

オプション2

emacs7_R3Xの回答で指摘されているように、実行時にフルパスを使用してください。たとえば、

sudo /home/user1/local_build/bin/emacs

オプション3

以下を追加してくださいalias

alias emacs='/home/user1/local_build/bin/emacs'

この金額を合計aliasに追加する必要があります。存在しない場合は作成してください。/home/user1/.bashrc/root/.bashrc/root/.bashrc

オプション3はシステムに実質的な混乱をもたらし始めるので、お勧めできません(私の考えでは)。rootシェルを使用せずに可能ですbash。なぜemacsユーザーフォルダにあるのかわからないので、このオプションを含めました。

別のオプションは、オプション3を次のようにもう少しカスタマイズされたものに変更することですalias

alias emacsuser1='/home/user1/local_build/bin/emacs'

でも

alias localemacs='/home/user1/local_build/bin/emacs'

これにより、非標準インストールまたはカスタムビルドを実行していることがわかります。

答え3

Emacs(sudo)の実行を追跡すれば、何が起こっているのかを把握できると思いました。ここ使い方のフレンドリーでフレンドリーな説明です。

関連情報