How can I pass an alias to sudo?
Ironically, the solution is to call sudo
from an alias.
alias sd="sudo "
Note: While not recommended, you could name the alias sudo
: alias sudo="sudo "
Bash Reference Manual (Aliases)
If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion.
Related videos on Youtube
![Michael Niño](https://lh3.googleusercontent.com/-1O19CA_lXO4/AAAAAAAAAAI/AAAAAAAAAEI/rAF-AV8uAho/photo.jpg?sz=256)
Michael Niño
Updated on September 18, 2022Comments
-
Michael Niño almost 2 years
I have tried putting my aliases in
~/.bash_profile
,~/.bashrc
,/etc/profile
, and/etc/bashrc
.I am still unable to execute the following:
alias zf2="php public/index.php"
and then execute:
sudo zf2 orm:info
The issue seems to be that I am unable to specify an alias as a command using visudo-- which causes a syntax error.
So I am unable to call:
sudo zf2 orm:info
However, I was able to create a script at /usr/share/scripts/zf2 which contains:
#!/bin/bash alias zf2="php public/index.php" zf2 $1
and add this script as the command in visudo. When this script is in the end user's PATH I am able to execute
zf2 orm:info
I have different aliases like
zf2
that I need to expose to the end user. I would prefer to maintain alias instead of a collection of scripts.-
Michael Niño about 7 yearsUnfortunately I want to use aliases in visudo and I am unable.
-
Steven about 7 yearsThat is not possible. Aliases are handled by the shell (in your case bash) and expanded before being sent to the application.
sudo
itself knows nothing about aliases. -
can-ned_food about 7 yearsBecause @Steven is technically correct, you should clarify whether you simply want to expand aliases prior to
sudo
being passed the line, or whether you want the aliases expanded in the elevated environment. Pedantry isn't merely a way to elicit eye-rolls. (Wow, but that last sentence doesn't look kosher at all.) -
Gilles 'SO- stop being evil' about 7 yearsPossible duplicate of How can I alias a command for sudo?
-
Denis de Bernardy about 7 yearsTry it with
sudo -E
-
-
Pysis about 7 yearsI can maybe see reasons why someone would and would not want this done as the default for any system. The convenience and expectation as asked, versus being more careful with elevated privileges.
-
The Nate about 7 years
alias sd="sudo "
maychance? -
Michael Niño about 7 yearsAfter reviewing my aliases I noticed that I did not have
alias sudo="sudo "
in the end users environment. This is the answer