De onde o PATH bash do CentOS 7 obtém / usr / local / bin?

4

Eu acabei de criar um novo CentOS 7 VM (bash versão 4.2.46) com o Vagrant usando a caixa centos / 7, e quando estou logado como o usuário vagabundo, este é o meu PATH:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin

Quando logado como root, aqui está o PATH:

/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

Eu sei que /etc/profile está adicionando /usr/local/sbin:/usr/sbin (no final para a maioria dos usuários, no início do root), e o /etc/skel/.bash_profile que acaba no diretório inicial do vagrant está adicionando /home/vagrant/.local/bin:/home/vagrant/bin , mas onde a configuração inicial vem de?

No momento, não tenho nenhuma explicação de por que os usuários acabam com /usr/local/bin:/usr/bin em seu PATH e o root obtém os outros.

(Francamente, a ordenação do PATH raiz parece muito estranha, dado que /usr/local/sbin e /usr/sbin devem estar no final, de acordo com /etc/profile .)

    
por Iain Hallam 20.02.2017 / 19:02

4 respostas

4

No bash source "config-top.h" tem isto:

/* 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
    
por 15.03.2017 / 23:59
10

Outras pessoas pediram a mesma coisa no rastreador de bugs do CentOS. O post mais antigo que encontrei foi este .

/ usr / local / bin é codificado em / bin / bash.

  1. link
  2. link
  3. link
  4. link

Como você verá, esse problema foi relatado pela primeira vez em maio de 2012 e já existia no CentOS 6 e no CentOS 7.

Então, por mais confuso que pareça, parece que sua análise de que os caminhos não estão vindo de / etc / profile está correta. Os caminhos são provenientes de / bin / bash.

    
por 13.03.2017 / 16:28
5

Definitivamente parece codificado em /bin/bash

strings /bin/bash | grep "\/usr\/local\/bin"
/usr/local/bin:/bin:/usr/bin

que parece ser o PATH padrão.

    
por 13.03.2017 / 16:33
3

Além de respostas anteriores; Se você está alcançando sua VM por ssh, isso pode ter sentido.

Em /etc/ssh/sshd_config :

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
    
por 16.03.2017 / 15:16