Как разделить псевдонимы 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