Заранее извиняюсь, если этот вопрос будет раздражать всех до чертиков, как я ценю, его задавали по-разному много раз прежде. Пожалуйста, будьте уверены, я прочитал архивы и попробовал по крайней мере некоторые из предложений, но все еще не могу решить (простую) проблему. Надеюсь, кто-то может дать ответ, и я чувствую себя соответствующим образом смиренным. К вашему сведению, во избежание любой двусмысленности, я собираюсь использовать абсолютные, а не относительные пути.
Когда я вхожу в систему, я делаю это как пользователь adam
. Псевдонимы в /Users/adam/.bash_profile
загружаются, и я могу использовать их сразу после извлечения терминала. Я не использую .bashrc
файл, и это нормально.
Время от времени я переключаюсь на root, вводя su
в терминал и затем вводя свой пароль. Приглашение меняется, и я теперь являюсь пользователем root. У меня такой вопрос: можно ли сразу после того, как стать пользователем root, загрузить мой корневой профиль bash без необходимости вручную загружать файл профиля? Причина, по которой я знаю, что это не происходит автоматически, заключается в том, что у меня есть одинаковые псевдонимы в моем корневом профиле и моем /Users/adam/.bash_profile
. После того, как я стал пользователем root source [root_profile_file]
, они не работают , если я не наберу. Я попытался настроить следующие перестановки и затем переключиться на root через терминал, но ни одна из них не автоматически создала профиль / псевдонимы (обратите внимание, у меня нет ни одной из нижеприведенных опций, настроенных одновременно, поэтому я не думаю, что ' путаю систему):
Вариант 1: поместите мои псевдонимы в/etc/profile
Вариант 2:
- в
/etc/profile
, вставить[ -r /etc/bashrc ] && . /etc/bashrc
- положить мои псевдонимы в
/etc/bashrc
Вариант 3:
- в
/etc/bash_profile
, вставить[ -r /etc/bashrc ] && . /etc/bashrc
- положить мои псевдонимы в
/etc/bashrc
Вариант 4: поместите мои псевдонимы в/var/root/.profile
Вариант 5:
- в
/var/root/.profile
, вставить[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- положить мои псевдонимы в
/var/root/.bashrc
Вариант 6:
- в
/var/root/.bash_profile
, вставить[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- положить мои псевдонимы в
/var/root/.bashrc
Обратите внимание, что с любым из вышеперечисленного, если я переключаюсь на root, а затем source root_profile_file
печатаю, псевдонимы загружаются, но только если я действительно получаю файл вручную. Возможно, я совершенно не понял, как работает bash, и невозможно автоматически получить файл профиля после переключения на root, но я надеюсь, что есть простое решение. Заранее спасибо всем, кто нашел время, чтобы прочитать это сообщение.
su
не должны ни работать, какroot
. Для этого естьsudo
, или вы можете работать так, чтобы вам вообще не требовались привилегии root.На самом деле root использует
/bin/sh
(старая оболочка Bourne).bash_profile
и.bashrc
читается bash.Это становится сложно, так как эти файлы могут использовать функции, недоступные в
sh
. Даже если выsource .bashrc
илиsource .bash_profile
, у вас все равно будут проблемы со сложными функциями, например.Один из способов решить эту проблему - запустить
переключить
root
оболочку наbash
.источник
/bin/sh
использует/var/root/.profile
файл.Когда я абсолютно обязан, я
sudo bash
становлюсь корнем, но с окружением JRobert. Мой .bashrc содержит:чтобы заставить рутинный взгляд снова взглянуть на меня в КРАСНОМ, чтобы подчеркнуть, что я теперь (более) уязвим перед своим собственным [выберите один: дерзость, тупость, склонность толстого пальца, нежелание принять хороший совет, up s.creek - не роняй весло.
источник
Я использую
sudo -i
для переключения на пользователя root. В этом случае конфигурация оболочки читается из/var/root/.profile
.источник
В общем, я советую против, так
su
как это опасно, просто ищи его, и ты знаешь почему. На ваш вопрос, корневая учетная запись работает так же, как ваша учетная запись: она использует ~ / .bash_profile и / или ~ / .bashrc. Я не знаю, какой именно, но моя интуиция склоняется к ~ / .bashrc , поэтому вы можете попытаться поместить туда свои псевдонимы. Вот предложение:источник
sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash
Только это работает! Я пытался положитьexport PS1=...
любой из этих файлов выше. / etc / profile, / etc / bashrc /var/root/.bashrc /var/root/.profile /var/root/.bash_profile.Из всех этих файлов
/bin/sh
оболочка, не считывает информацию! (только bash) (Mac OS El Capitan). И мне пришлось сменить оболочку на bash.Также
"su -"
работает тоже. (с этой оболочкой идет чтение/var/root/.profile
файла)источник
Одним из способов решения этой проблемы является запуск следующего для переключения оболочки root на bash:
Это решение также исправило мою проблему.
источник
если у вас есть только один пользователь «по умолчанию» и пользователь root, вы можете поместить
alias su="su -"
в .bash_profile пользователя «по умолчанию», и вы получите желаемый эффект. Работает и без всяких хакерских вещей.источник