encontra o caminho de instalação global do compositor como raiz

3

Eu tenho alguns pacotes php instalados globalmente usando php composer dentro de um script

sudo -u me composer global require "phpmd/phpmd"

Eu quero encontrar o caminho desses pacotes php instalados globalmente. Quando executo which phpmd como usuário me , obtenho o caminho completo.

/home/me/.composer/vendor/bin/phpcs

No entanto, quando tento executar o comando como sudo , não obtenho nada. Eu acho que isso é porque o compositor foi adicionado globalmente e está no meu usuário me s PATH enquanto ele não está presente no PATH do sudo.

Em vez disso, tentei

 path="$(sudo -u me which phpcs)"

Mas isso também falha. No entanto, sucede para qualquer programa não instalado através do compositor. Como posso encontrar os pacotes php globalmente instalados através do compositor como sudo ?

o caminho de mim

/home/me/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

caminho do sudo (su's)

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    
por myol 03.05.2016 / 18:18

2 respostas

1

O problema, como você pode notar na diferença de caminho, é que o caminho de mim inclui /home/me/.composer/vendor/bin . Sudo não herda o ambiente do usuário.

Você precisaria importá-lo manualmente. Não está claro porque você quer que o root veja os arquivos de um usuário específico em seu caminho.

Para encontrar um arquivo, você pode usar o comando find , como find /home -name FileName .

    
por 03.05.2016 / 18:47
1

Graças à sugestão de Julie e a algumas outras respostas sobre SO, descobri

 path="$(PATH=$PATH:/home/me/.composer/vendor/bin which phpcs)"

que funciona bem

    
por 03.05.2016 / 19:13

Tags