У меня есть псевдоним, который передает некоторые параметры инструменту, который я часто использую. Иногда я бегаю как сам, иногда под sudo. К сожалению, конечно, sudo не распознает псевдоним.
У кого-нибудь есть подсказка о том, как пропустить псевдоним?
В этом случае у меня есть куча вариантов для Perl, когда я отлаживаю:
alias pd='perl -Ilib -I/home/myuser/lib -d'
Иногда мне приходится отлаживать свои инструменты от имени пользователя root, поэтому вместо запуска:
pd ./mytool --some params
Мне нужно запустить его под sudo. Я пробовал много способов:
sudo eval $(alias pd)\; pd ./mytool --some params
sudo $(alias pd)\; pd ./mytool --some params
sudo bash -c "$(alias pd)\; pd ./mytool --some params"
sudo bash -c "$(alias pd); pd ./mytool --some params"
sudo bash -c eval\ "$(alias pd)\; pd ./mytool --some params"
sudo bash -c eval\ "'$(alias pd)\; pd ./mytool --some params'"
Я надеялся на хороший, краткий способ гарантировать, что мой текущий псевдоним pd был полностью использован (на случай, если мне понадобится настроить его позже), хотя некоторые из моих попыток не были краткими. Мое последнее средство - поместить его в сценарий оболочки и поместить в то место, которое sudo сможет найти. Но псевдонимы иногда очень удобны, так что это последнее средство.
A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.