У меня есть сервер Centos 5.5, в котором есть собственные команды псевдонимов для моей учетной записи. Когда я делаю, sudo bash
я все еще могу использовать эти псевдонимы, мне не нужно было добавлять псевдонимы к корню .bashrc
.
У меня есть другой сервер, который является Centos 6.5. Но когда я выполню sudo bash
, он не будет использовать мои псевдонимы пользователя, на котором я вошел как. Кто-нибудь знает, где я настраиваю его, чтобы включить псевдонимы пользователя, в который я вошел, когда я использую sudo bash
?
sudo sudo -V
вывод иenv_keep
на странице руководства sudoers.Defaults !always_set_home
иDefaults !env_reset
`Ответы:
Добавьте следующую строку в ваш ~ / .bashrc:
Из руководства по bash
Таким образом, Bash проверяет только первое слово команды на наличие псевдонима, любые слова после этого не проверяются. Это означает, что в такой команде, как sudo ll, bash проверяет псевдоним только первое слово (sudo), ll игнорируется. Мы можем сказать bash проверить следующее слово после псевдонима (т.е. sudo), добавив пробел в конец значения псевдонима.
источник
sudo
команде, напримерsudo some_alias ...
, но OP спрашивает, как заставить псевдонимы, определенные для его собственного пользователя, работать после того, как он переключается на другого пользователя, используяsudo
. Допустим, яsome_alias
определил. Когда яsudo
сroot
помощьюsudo su
, новая среда создается и что псевдоним не определен там. Есть-E
параметрsudo
команды, который должен экспортировать окружение, но похоже, что псевдонимы не являются его частью.Используйте
sudo -E
, который будет экспортировать вашу среду.источник
sudo -E bash
. При использовании сsu
as, данныеsudo -E su
, определенные в user.bashrc
(псевдонимы, приглашения и т. Д.), Не сохраняются, даже если в обоих случаях переменные среды сохраняются. Я не уверен, как именно это работает.