Je viens de lancer un tout nouveau CentOS 7 VM (version bash 4.2.46) avec Vagrant en utilisant la boîte centos/7, et lorsque je suis connecté en tant qu'utilisateur vagabond, ce est mon CHEMIN:
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin
Une fois connecté en tant que root, voici le CHEMIN:
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
Je le sais /etc/profile
ajoute /usr/local/sbin:/usr/sbin
(à la fin pour la plupart des utilisateurs, au début pour root) et /etc/skel/.bash_profile
qui se retrouve dans le répertoire personnel vagabond ajoute /home/vagrant/.local/bin:/home/vagrant/bin
, mais d'où vient le réglage initial?
À l'heure actuelle, je n'ai aucune explication de la raison pour laquelle les utilisateurs se retrouvent avec /usr/local/bin:/usr/bin
dans leur CHEMIN, et root obtient les autres.
(Franchement, l'ordre du PATH racine semble très étrange, étant donné que /usr/local/sbin
et /usr/sbin
devrait être à la fin, selon /etc/profile
.)
Dans la source bash "config-top.h" a ceci:
/* The default value of the PATH variable. */
#ifndef DEFAULT_PATH_VALUE
#define DEFAULT_PATH_VALUE \
"/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:."
#endif
/* The value for PATH when invoking `command -p'. This is only used when
the Posix.2 confstr () function, or CS_PATH define are not present. */
#ifndef STANDARD_UTILS_PATH
#define STANDARD_UTILS_PATH \
"/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
#endif
D'autres personnes ont demandé la même chose sur le traqueur de bogues CentOS. Le premier message que j'ai trouvé était celui-ci .
/ usr/local/bin est codé en dur dans/bin/bash.
Comme vous le verrez, ce problème a été signalé pour la première fois en mai 2012 et a existé dans CentOS 6 et CentOS 7.
Donc, aussi déroutant que cela puisse être, il semble que votre analyse que les chemins ne proviennent pas de/etc/profile est correcte. Les chemins proviennent de/bin/bash.
Il semble définitivement codé en dur dans /bin/bash
strings /bin/bash | grep "\/usr\/local\/bin"
/usr/local/bin:/bin:/usr/bin
qui semble être le CHEMIN par défaut.
En plus des réponses précédentes; Si vous vous atteignez VM par ssh, cela pourrait avoir du sens.
Dans /etc/ssh/sshd_config
:
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin