Как разделить псевдонимы bash между пользователем bash без полномочий root и оболочкой, открытой "sudo -i"?
Я привык использовать sudo -i
и не имеют root
пароль установлен, т.е. su -
не работает Я ищу способ поделиться bash
псевдонимы между пользовательской оболочкой (например, открытой при запуске gnome-terminal
запускается как пользователь, вошедший в диспетчер отображения), а оболочка открывается sudo -i
,
В соответствии с man sudo
это оболочка входа в систему и afaik он должен источник ~/.profile
т.е. /root/.profile
, но помещая псевдонимы в /root/.profile
не работает Только если я бегу bash
в оболочке, открытой sudo -i
псевдоним доступен. В соответствии с /etc/passwd
root
Оболочка bash
а также SHELL
переменная подтверждает это (в оболочке, запущенной sudo -i
).
Я бы предпочел не помещать псевдонимы в /etc/profile
потому что это выставит их любому пользователю, и я хочу, чтобы они были только для пользователя диспетчера отображения и root
,
2 ответа
Соответствующий пост Serverfault предлагает использовать /etc/bashrc
, но я бы лично порекомендовал создать /etc/shell_aliases
файл (видимо /etc/aliases
по sendmail пакет уже зарезервирован), и получайте его от своих пользователей и пользователей root .bashrc
файл. Таким образом, вы можете переопределить псевдонимы глобально.
Альтернативный подход, как показано в этом посте AskUbuntu, заключается в использовании /etc/profile.d/00-aliases.sh
,
$ sudo bash -c 'echo alias print_hello=\"echo 'HELLO\ ASKUBUNTU'\" > /etc/profile.d/00-aliases.sh '
$ sudo -i
$ print_hello
HELLO ASKUBUNTU
Примечание: для оболочек графического интерфейса вам придется выйти и войти, потому что .profile
источник каждый раз, когда вы входите в систему, и как только вы поете в систему через графический экран входа в систему, он будет получен, но только один раз. После этого все открытые эмуляторы терминала считаются интерактивными оболочками.
Это сработало для меня. Откройте свой корень
.bashrc
файл и отредактируйте
bash_aliases
функция.
Изменять:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
к
if [ -f /home/[username]/.bash_aliases ]; then
. /home/[username]/.bash_aliases
fi