$ 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>
うまくいきます。
質問:
なぜemacs
startを使用できないのです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
emacs
7_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)の実行を追跡すれば、何が起こっているのかを把握できると思いました。ここ使い方のフレンドリーでフレンドリーな説明です。