У меня есть пользователь, скажем user1
, у которого есть изменения его .bash_profile
, один из них , изменяющих PATH
, например: export PATH=/some/place:$PATH
. Это изменение работает нормально, если я вхожу в систему user1
или делаю su - user1
.
Но если я попытаюсь выполнить команду через su
как root
, например:
su -c test.sh oracle
(тест содержит echo $PATH
)
Кажется, он не имеет модифицированных PATH
(или корневых PATH
, в этом отношении). Я также попытался скопировать .bash_profile
на .profile
, но безрезультатно.
Почему это происходит?
rhel
environment-variables
su
NullUser
источник
источник
su
Ответы:
Использование
su
без-l
или-
запускаbash
в качестве интерактивной, но не входящей в систему оболочки, которая не читает ни из одного из указанных вами файлов. Используйте-l
или-
опцию или поставить соответствующие конфигурации в/root/.bashrc
.Краткий обзор конфигурационных файлов:
-l
/--login
) считывает/etc/profile
первый, а затем первым он находит из:~/.bash_profile
,~/.bash_login
, и~/.profile
.-i
) читает/etc/bash.bashrc
и~/.bashrc
, в том порядке (если не используется--rcfile
опция, и указывает, что нужно искать в другом месте).-l
или-i
, считывают файл, указанный вBASH_ENV
переменной среды.sh
качестве оболочки входа в систему он будет читать/etc/profile
и~/.profile
в том порядке.sh
интерактивный не-логин, он читает файл, указанный вENV
.источник
Bash ведет себя по-разному в зависимости от того, считает ли он, что это оболочка входа в систему, то есть первая оболочка, запускаемая при входе в систему. Он читает только
.bash_profile
если это оболочка входа в систему. Если вместо этого выPATH
введете код -changing.bashrc
, он будет работать для всех интерактивных оболочек bash, а не только для оболочек входа в систему.источник
Если вы используете среду Gnome в Scientific Linux 6 (или предположительно RHEL 6), запустите терминал. Перейдите на вкладку
Edit
->Profile Preferences
->"Title and Command"
. Убедитесь, что установлен флажок «Запускать команду как оболочка входа». Я обнаружил, что терминальное приложение Gnome игнорирует мое,.bash_profile
если я не сделаю этого.источник