Por que esse diretório não está sendo adicionado ao meu PATH quando uso o sudo?

5

Acabei de compilar e instalar o servidor da web Apache a partir de fontes e agora quero adicionar o script apachectl a PATH .

Eu sei que preciso adicionar o diretório ao root user PATH (já que o script precisa ser executado como root), então pensei em tentar adicionar a linha:

  • arquivo: /root/.bashrc
#
# add directory of apachectl to PATH
PATH=$PATH:/usr/local/apache2/bin

Eu sei que o caminho que eu adicionei está correto, mas se eu executar o comando:

sudo apachectl start

Eu recebo:

sudo: apachectl: command not found

como posso adicionar esse diretório ao meu PATH ?

    
por the_velour_fog 06.04.2015 / 13:07

1 resposta

8

A maneira de adicionar um diretório ao PATH do sudo (que, como você descobriu, não é igual ao do root), é editar o arquivo sudoers :

sudo visudo

Em seguida, encontre esta linha:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Adicione o seu diretório ao final:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/apache2/bin"

Como alternativa, você pode criar apenas links simbólicos dos executáveis que deseja executar e colocá-los em /usr/local/bin diretamente:

sudo find /usr/local/apache2/bin -type f -executable -exec ln -s {} /usr/local/bin/

A adição de um alias para sudo que exporta seu ambiente funciona, mas é meio deselegante e, mais importante, funciona apenas para um usuário.

    
por 06.04.2015 / 13:50

Tags