web-dev-qa-db-fra.com

D'où le chemin BASH sur CentOS 7 obtient-il / usr / local / bin?

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.)

7
Iain Hallam

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
6
Schrute

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.

  1. https://bugs.centos.org/view.php?id=102
  2. https://bugs.centos.org/view.php?id=10199
  3. https://bugs.centos.org/view.php?id=10198
  4. https://bugs.centos.org/view.php?id=7492

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.

12
user5870571

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.

5
user9517

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
4
pbacterio