Если вы хотите иметь возможность выполнять псевдонимы другого пользователя как root без необходимости выполнять дополнительную работу (например, копировать определения псевдонимов в файл профиля root, преобразовывать псевдонимы пользователя в сценарии оболочки), тогда вы можете извлечь команду псевдонима и передать ее оболочке.
Пример:
sudo su - otheruser -s /bin/bash -c "alias ll | sed -E \"s/.+='(.+)'/\1/\" | bash"
Или вы можете использовать мою общую функцию «запустить как»:
runas() {
if [ $# -eq 2 ]; then
# Check if user exists
id -u $1 > /dev/null 2>&1
if [ $? -gt 0 ]; then
echo "$FUNCNAME: no such user"
return 1
fi
# Check if alias exists
sudo su - $1 -s /bin/bash -c "alias $2" > /dev/null 2>&1
if [ $? -eq 0 ]; then
# Alias is defined; execute $2 as alias
sudo su - $1 -s /bin/bash -c "alias $2 | sed -E \"s/.+='(.+)'/\1/; s/'\\\'//g\" | bash"
else
# Alias is not defined; execute $2 as command
sudo su - $1 -s /bin/bash -c "$2"
fi
else
echo "Execute a command or alias as another user"
echo "Usage: $FUNCNAME USER ALIAS"
return 2
fi
}
Это можно сделать с помощью следующей команды для lightdm:
/usr/bin/dm-tool switch-to-greeter