В предыдущем удаленном ответе я упомянул, как мне удалось установить libinput на машину, на которой его нет. Это, конечно, был ответ на другой вопрос на другом сайте, и вместо этого я сделал ошибку, отвечая здесь.
Вот решение, которое сработало для меня.
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'
Проблема здесь в том, что bash оценивает только первое слово команды для псевдонима и заменяет текст текстом этого псевдонима.
, когда вы делаете sudo <your_alias>
, bash оценивает только первое слово, которое является самим sudo
, и не расширяет вашу команду с псевдонимом.
В качестве обходного пути можно создать псевдоним для самого sudo
Если вы создаете псевдоним, например alias='sudo '
(, обратите внимание на пробел после команды sudo ), вы можете выполнить желаемую команду.