Eu tenho um usuário, por exemplo user1
, que tem modificações ao seu .bash_profile
, um deles mudando a PATH
, por exemplo: export PATH=/some/place:$PATH
. Essa alteração funciona bem se eu fizer logon como user1
ou a su - user1
.
Mas se eu tentar executar um comando via su
como root
, por exemplo:
su -c test.sh oracle
(teste contém echo $PATH
)
Não parece ter o modificado PATH
(ou raiz PATH
, para esse assunto). Eu também tentei copiar .bash_profile
para .profile
, sem sucesso.
Por que isso está acontecendo?
rhel
environment-variables
su
NullUser
fonte
fonte
su
Respostas:
Usar
su
sem-l
ou-
iniciarbash
como um shell interativo, mas não de login, que não é lido em nenhum dos arquivos especificados. Use o-l
ou-
opção ou colocar a configuração relevante para/root/.bashrc
.Resumo rápido dos arquivos de configuração:
-l
/--login
) lê/etc/profile
primeiro, e então o primeiro que encontra por:~/.bash_profile
,~/.bash_login
, e~/.profile
.-i
), lê/etc/bash.bashrc
e~/.bashrc
, nessa ordem (a menos que a--rcfile
opção seja usada e diz para procurar em outro lugar).-l
ou-i
, lê o arquivo especificado naBASH_ENV
variável de ambiente.sh
um shell de login, ele será lido/etc/profile
e~/.profile
, nessa ordem.sh
um não logon interativo, ele lê o arquivo especificado emENV
.fonte
O Bash se comporta de maneira diferente dependendo se acredita que é um shell de logon, ou seja, o primeiro shell executado quando você faz logon no sistema. Ele apenas lê
.bash_profile
se é um shell de login. Se vocêPATH
inserir o código -changing.bashrc
, ele será executado para todos os shells bash interativos, não apenas shells de login.fonte
Se estiver usando o ambiente Gnome no Scientific Linux 6 (ou presumivelmente no RHEL 6), inicie um terminal. Vá para
Edit
->Profile Preferences
->"Title and Command"
guia. Verifique se a caixa de seleção "Executar comando como um shell de login" está marcada. Eu descobri que o aplicativo de terminal do Gnome está ignorando o meu, a.bash_profile
menos que eu faça isso.fonte