How can I pass an alias to sudo?
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.
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.