Ajustar $ PATH em / etc / profile não afeta a raiz

7

Eu adicionei um diretório a PATH in /etc/profile . Isso funciona para minha conta de usuário, mas não para raiz. É fácil adicioná-lo ao meu /root/.bashrc , mas gostaria de entender o que está errado. É um Debian 6 praticamente inalterado, então acho que minhas mudanças deveriam resolver o problema.

Aqui está meu /etc/profile :

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "'id -u'" -eq 0 ]; then
  PATH="/usr/lib/distcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/lib/distcc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "'id -u'" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

Editar: o caminho que eu adicionei é o distcc-stuff . Aqui está o que o echo $PATH me diz:

$ echo $PATH
/usr/lib/distcc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
por techshack 25.05.2011 / 15:33

3 respostas

6

Você precisa executar um shell de login (ou executar um shell não interativo, mas não é isso que deseja) para carregar /etc/profile .

Use

su - username

ou no caso de raiz

su -

para fazer isso.

- é o mesmo que -l ou --login e torna o shell um shell de login.

    
por 25.05.2011 / 15:36
0

Um shell de login é necessário e pode ser criado usando o sudo:

sudo bash --login <command>
    
por 12.09.2014 / 01:56
0

Você precisa simular um shell de login, o que você pode fazer com o sudo usando -i :

sudo -i <command>

De man sudo :

 -i [command]
             The -i (simulate initial login) option runs the shell specified by the password
             database entry of the target user as a login shell.  This means that login-spe‐
             cific resource files such as .profile or .login will be read by the shell.  If a
             command is specified, it is passed to the shell for execution via the shell's -c
             option.  If no command is specified, an interactive shell is executed.  sudo
             attempts to change to that user's home directory before running the shell.  The
             security policy shall initialize the environment to a minimal set of variables,
             similar to what is present when a user logs in.  The Command Environment section
             in the sudoers(5) manual documents how the -i option affects the environment in
             which a command is run when the sudoers policy is in use.
    
por 10.09.2018 / 21:38