Как разделить псевдонимы 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/passwdrootОболочка 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
Другие вопросы по тегам