$ 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
문제가 해결될 것입니다.
편집: user 로 실행하려고 하면 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)의 실행을 추적하면 무슨 일이 일어나고 있는지 알아낼 수 있을 것이라고 생각했습니다.여기사용법에 대한 친절하고 친절한 설명입니다.