Depende fortemente de como você chama seu programa com sudoou su.
Por exemplo, no sistema em que estou neste momento:
.bashrc
COMMAND $HOME $USER Env. $PATH
1. sudo -i (root) root root [1]
2. sudo -s (USER) root USER /home/${USER}/bin:[1]
3. sudo /bin/bash (USER) root USER /home/${USER}/bin:[1]
4. sudo su (root) root USER [1]:/usr/games:/usr/local/games
5. sudo su - (root) root root [1]
Onde [1] = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Env = As variáveis de ambiente são redefinidas para 1 e 5, extraídas de $ USER em 2,3,4
Assim, um script ou um programa que é lançado com uma opção diferente pode ver diferente $PATH, $HOME, sua concha pode ler diferentes .bashrc, .profilee variáveis de ambiente. Ele lê o arquivo relacionado ao $HOME. Cada usuário pode modificar seu ambiente de uma maneira diferente (variáveis $PATH, .bashrc, .profile, .bash_profile, alias ...). Em particular, um usuário pode ter uma ordem diferente dos diretórios nos seus $PATHe, como conseqüência, um script pode executar um comando, por exemplo, em /home/$USER/binvez daquele no caminho esperado a partir da raiz.
Você pode executar o programa sudo -icomo estava logado como root su -, mas pode ter um comportamento diferente se executá-lo com sudo MyCommandou com su -c MyCommand.
De man su:
Na parte da descrição:
O ambiente atual é passado para o novo shell . O valor de $ PATH é redefinido para / bin: / usr / bin para usuários normais ou / sbin: / bin: / usr / sbin: / usr / bin para o superusuário
...
Na parte de opções:
- , -l , --login
Forneça um ambiente semelhante ao que o usuário esperaria se o usuário estivesse conectado diretamente .
Do homem sudo
-i , --login
Execute o shell especificado pela entrada do banco de dados de senhas do usuário de destino como um shell de logon. Isso significa que os arquivos de recursos específicos de login, como .profile ou .login, serão lidos pelo shell. Se um comando for especificado, ele será passado para o shell para execução através da opção -c do shell. Se nenhum comando for especificado, um shell interativo será executado. sudotenta mudar para o diretório inicial desse usuário antes de executar o shell. O comando é executado com um ambiente semelhante ao que um usuário receberia ao efetuar login . A seção Ambiente de Comando no manual sudoers (5) documenta como a opção -i afeta o ambiente em que um comando é executado quando a política de sudoers está em uso.