J'utilise Ubuntu 12.04.
Récemment, j'ai supprimé accidentellement python
, entraînant la désinstallation d'un grand nombre de packages. Je les ai réinstallés, mais maintenant j'ai des problèmes.
$ echo $PATH /home/paul/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/paul/.rvm/bin
Notez qu'il n'y a pas de /sbin
ou /usr/local/sbin
!
Je n'ai aucune idée de comment c'est arrivé!
Ainsi,
$ sudo apt-get autoremove -y ... dpkg: warning: 'ldconfig' not found in PATH or not executable ... $ sudo shutdown now sudo: shutdown: command not found.
Je suis allé chercher. /etc/environment
(que je n'ai pas touché) a
$ cat /etc/environment PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
J'ai redémarré (quelques fois). Pourquoi mon path n'a pas /sbin
?
METTRE À JOUR
J'ai essayé de créer un nouvel user
$ sudo adduser paul-test $ su -- paul-test $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Aussi,
$ sudo su $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Donc quelque chose est en train de tuer /sbin
pour moi.
J'ai vérifié .bashrc
.
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
Et .profile
PATH="$HOME/bin:$PATH"
Il n'y a pas ~/.bash_profile
ou ~/.bash_login
.
FYI
C'est le même problème décrit ici et ici et beaucoup d'autres endroits.
Ils traitent le symptôme de apt-get
ne fonctionne pas, plutôt que de corriger le vrai problème de no /sbin
.
Le PATH peut être défini dans n'importe quel
~/.bashrc
~/.profile
~/.bash_profile
~/.bash_login
/etc/profile
/etc/environment
/etc/bash.bashrc
Les files lus dépendent du type de session bash que vous utilisez. Ce que vous voulez faire est grep pour PATH dans tous ces files.
$ grep PATH ~/.bashrc ~/.profile ~/.bash_profile ~/.bash_login \ /etc/profile /etc/environment /etc/bash.bashrc
J'ai une petite fonction astucieuse pour ce genre de problème:
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 }
Je l'ai dans mon .bashrc
donc chaque fois que quelque chose d'étrange se passe, je l'utilise pour searchr la string pertinente dans tous les files de configuration possibles. Par exemple:
$ grep_bash PATH
Comme note secondaire, ne pas avoir /sbin
et /usr/sbin
dans le PATH d'un user normal est une pratique courante pour la plupart des dissortingbutions. Il n'y a aucune raison pour un user normal d'avoir ces directorys dans leur path. Je viens de vérifier sur un server Debian et Ubuntu et une machine SuSe et seul Ubuntu semble append /sbin
au path d'un user normal et il le fait dans /etc/environment
. Les deux autres ne l'ajoutent que si l'user est root.