Я в той же лодке и собирался использовать правила сравнения только на локальном компьютере. единственное, что я читал, это ставить стоп после каждого правила. поэтому, когда совпадение будет найдено, проверка других правил прекратится.
Теперь метод остановки зависит от вашей версии.
новее его остановись
старейшина тильда я думаю
Классический пример , почему бы не использовать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
в папке пользователей, поэтому я включил эту опцию.
Другой вариант — изменить alias
для Варианта 3 на что-то более индивидуальное, например:
alias emacsuser1='/home/user1/local_build/bin/emacs'
или даже
alias localemacs='/home/user1/local_build/bin/emacs'
Таким образом вы узнаете, что используете не -стандартную установку или пользовательскую версию.
cylgalad упомянул причину вашей ошибки в комментарии о том, что путь /home/user1/local_build/bin
отсутствует в системной переменной root 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
Добавление каталога в root PATH
не будет работать по причинам, упомянутым steeldriver в комментарии.