Por que o mesmo usuário tem um valor PATH diferente no servidor linux?

2

Eu entrei no meu servidor Linux (Redhat AS4) por meio do SSH como o usuário 'guest', depois executei o comando echo $PATH e a saída é /usr/local/bin:/bin:/usr/bin .

No entanto, quando eu executar o comando su - guest para alternar para o mesmo usuário, execute o comando echo $PATH , a saída se tornará /usr/bin:/bin:/usr/local/bin .

Por que o mesmo usuário tem um valor PATH diferente no servidor Linux? Isso me faz ter diferentes versões do Python e não sei o que causa esse problema.

    
por bluesea007 01.09.2009 / 11:58

5 respostas

1

Tente depurar usando a técnica descrita em minha resposta no superusuário, usando

debug_msg "running ~/.bashrc ($0), PATH = '$PATH'"

e similares para / etc / bashrc, / etc / profile, etc.

    
por 01.09.2009 / 12:44
1

Verifique os campos ENV_SUPATH e ENV_PATH em /etc/login.def

Para uma boa prática de script, não confie na variável PATH para executar um comando, pois ele é ambíguo.

    
por 01.09.2009 / 12:26
1

Diferentes scripts (fazendo manipulações diferentes no PATH) são originados nos dois casos.
Como você está usando a opção - , su deve fornecer seu script de login, enquanto ssh não deve.

Eu não sei qual comportamento você quer exatamente, mas talvez você possa verificar se algumas opções su (por exemplo, -m, --preserve-environment: não redefine as variáveis de ambiente) poderia ajudar?

    
por 01.09.2009 / 12:05
1

São as pessoas assim: -

Em / etc / passwd, onde o ID do usuário é definido, um diretório inicial e um shell padrão:

auser:!:97:51::/home/user:/usr/bin/ksh

Quando um usuário se registra no 'ksh' ou bash ou o que for executado, ele pegará um 'PATH' padrão do arquivo '/ etc / environment' (e alguns shells rodarão um arquivo de inicialização do sistema), mas, ele também executará os comandos de um script inicial no diretório inicial no caso acima do arquivo '.kshrc'.

Assim, o PATH pode ser definido pelo comando inicial, pelas configurações do sistema para o comando inicial e pelos arquivos .rc 'ocultos' no diretório inicial dos usuários.

O 'su -' não executa o mesmo conjunto de comandos iniciais, pois o login apenas seleciona as configurações padrão do arquivo '/ etc / environment'.

    
por 01.09.2009 / 12:18
0

da su manpage

su is used to become another user during a login session. Invoked with-
       out a username, su defaults to becoming the super  user.  The  optional
       argument  -  may be used to provide an environment similiar to what the
       user would expect had the user logged in directly.

portanto, você sempre obterá configurações de env diferentes em "su" e "su -"

    
por 01.09.2009 / 12:29