/ etc / environment não está funcionando

4

Estou usando o Ubuntu 12.04.

Recentemente, eu acidentalmente removi python , fazendo com que um grande número de pacotes fosse desinstalado. Eu os reinstalei, mas agora estou tendo problemas.

$ echo $PATH
/home/paul/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/paul/.rvm/bin

Observe que não há /sbin ou /usr/local/sbin !

Eu não tenho ideia de como isso aconteceu!

Assim,

$ sudo apt-get autoremove -y
...
dpkg: warning: 'ldconfig' not found in PATH or not executable
...
$ sudo shutdown now
sudo: shutdown: command not found.

Eu fui procurar. /etc/environment (que eu não toquei)

$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

Eu reiniciei (algumas vezes). Por que meu caminho não tem /sbin ?

UPDATE

Eu tentei criar um novo usuário

$ sudo adduser paul-test
$ su -- paul-test
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Além disso,

$ sudo su
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Então, algo está matando /sbin para mim.

Eu verifiquei .bashrc .

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

E .profile

PATH="$HOME/bin:$PATH"

Não há ~/.bash_profile ou ~/.bash_login .

FYI

Este é o mesmo problema descrito aqui e aqui e muitos outros lugares.

Eles tratam o sintoma de apt-get não funcionando, em vez de corrigir o problema real de no /sbin .

    
por Paul Draper 23.01.2014 / 17:50

1 resposta

4

O PATH pode ser definido em qualquer um dos

  • ~/.bashrc
  • ~/.profile
  • ~/.bash_profile
  • ~/.bash_login
  • /etc/profile
  • /etc/environment
  • /etc/bash.bashrc

Quais são os que são lidos depende do tipo de sessão bash que você está executando. O que você quer fazer é grep para o PATH em todos esses arquivos.

$ grep PATH ~/.bashrc ~/.profile ~/.bash_profile ~/.bash_login \
            /etc/profile /etc/environment /etc/bash.bashrc 

Eu tenho uma pequena função bacana para esse tipo de problema:

grep_bash(){
  for f in  ~/.bashrc ~/.profile ~/.bash_profile ~/.bash_login \
            /etc/profile /etc/environment /etc/bash.bashrc; 
  do 
    [ -e $f ] && grep -H "$@" $f; 
  done
}

Eu tenho isso no meu .bashrc , então sempre que algo estranho está acontecendo, eu o uso para procurar a string relevante em todos os arquivos de configuração possíveis. Por exemplo:

$ grep_bash PATH

Como observação, não ter /sbin e /usr/sbin no PATH de um usuário normal é uma prática padrão para a maioria das distribuições. Não há razão para um usuário normal ter esses diretórios em seu caminho. Acabei de verificar em um Debian, Ubuntu Server e uma máquina SuSe e apenas o Ubuntu parece adicionar /sbin ao caminho de um usuário normal e isso acontece em /etc/environment . Os outros dois só adicionam se o usuário for root.

    
por 23.01.2014 / 19:28

Tags