Как я могу передать псевдоним sudo?

4844
Michael Niño

Я попытался положить свои псевдонимы ~/.bash_profile, ~/.bashrc, /etc/profile, и /etc/bashrc.

Я все еще не могу выполнить следующее:

alias zf2="php public/index.php" 

и затем выполните:

sudo zf2 orm:info 

Кажется, проблема в том, что я не могу указать псевдоним как команду, используя visudo--, что вызывает синтаксическую ошибку.

Поэтому я не могу позвонить:

sudo zf2 orm:info 

Тем не менее, мне удалось создать скрипт в / usr / share / scripts / zf2, который содержит:

#!/bin/bash  alias zf2="php public/index.php" zf2 $1 

и добавьте этот скрипт в качестве команды в visudo. Когда этот скрипт находится в PATH конечного пользователя, я могу выполнить

zf2 orm:info 

У меня есть разные псевдонимы, zf2которые мне нужно предоставить конечному пользователю. Я бы предпочел поддерживать псевдоним вместо набора скриптов.

35
К сожалению, я хочу использовать псевдонимы в visudo, и я не могу. Michael Niño 7 лет назад 1
Это невозможно. Псевдонимы обрабатываются оболочкой (в вашем случае bash) и расширяются перед отправкой в ​​приложение. `sudo` сам ничего не знает об псевдонимах. Steven 7 лет назад 2
Поскольку @Steven технически верен, вы должны уточнить, хотите ли вы просто развернуть псевдонимы _prior_ до `sudo`, передаваемого по линии, или хотите, чтобы псевдонимы были расширены в среде с повышенными правами. Педантизм - это не просто способ вызвать злобу. (Ух ты, но это последнее предложение совсем не выглядит кошерным.) can-ned_food 7 лет назад 2
Возможный дубликат [Как я могу использовать псевдоним команды для sudo?] (Https://superuser.com/questions/192725/how-can-i-alias-a-command-for-sudo) Gilles 7 лет назад 3
Попробуйте с `sudo -E` Denis de Bernardy 7 лет назад 1

1 ответ на вопрос

65
Steven

По иронии судьбы, решение состоит в том, чтобы позвонить sudoс псевдонима:

alias sd="sudo " 

Примечание: хотя это и не рекомендуется, вы можете назвать псевдоним sudo:alias sudo="sudo "

Справочное руководство Bash (псевдонимы)

Если последний символ значения псевдонима является пустым, то следующее слово команды, следующее за псевдонимом, также проверяется на расширение псевдонима.

Возможно, я вижу причины, по которым кто-то хотел бы и не хотел бы, чтобы это было сделано по умолчанию для любой системы. Удобство и ожидания, как просили, а не быть более осторожным с повышенными привилегиями. Pysis 7 лет назад 6
`alias sd =" sudo "` maychance? The Nate 7 лет назад 4
Изучив псевдонимы, я заметил, что в среде конечных пользователей у меня нет `alias sudo =" sudo "`. Это ответ Michael Niño 7 лет назад 0