sudo misinterpreting aliases

В предыдущем удаленном ответе я упомянул, как мне удалось установить libinput на машину, на которой его нет. Это, конечно, был ответ на другой вопрос на другом сайте, и вместо этого я сделал ошибку, отвечая здесь.

Вот решение, которое сработало для меня.

  1. Откройте GNOME Tweaks (вам может потребоваться загрузить его)
  2. Перейти к мыши и клавиатуре
  3. В разделе «Эмуляция щелчка мыши» выберите «Область».
0
27.02.2020, 18:32
2 ответа

sudo — это внешняя команда, которая не знает о ваших псевдонимах. Только ваша оболочка знает о ваших псевдонимах и sudoне является ее частью.

В этом случае я предполагаю, что sudoпытается запустить двоичный файл /usr/bin/link, который в моей системе Linux представляет собой простую команду, которая всегда создает жесткую ссылку, вызывая системный вызов link(2):

$ link --help
Usage: link FILE1 FILE2
  or:  link OPTION
Call the link function to create a link named FILE2 to an existing FILE1.

      --help     display this help and exit
      --version  output version information and exit

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation at: <https://www.gnu.org/software/coreutils/link>
or available locally via: info '(coreutils) link invocation'
6
28.04.2021, 23:21

Проблема здесь в том, что bash оценивает только первое слово команды для псевдонима и заменяет текст текстом этого псевдонима.

, когда вы делаете sudo <your_alias>, bash оценивает только первое слово, которое является самим sudo, и не расширяет вашу команду с псевдонимом.

В качестве обходного пути можно создать псевдоним для самого sudo

Если вы создаете псевдоним, например alias='sudo '(, обратите внимание на пробел после команды sudo ), вы можете выполнить желаемую команду.

1
28.04.2021, 23:21

Теги

Похожие вопросы