php composer
다음을 사용하여 전 세계적으로 일부 PHP 패키지를 설치했습니다.
sudo -u me composer global require "phpmd/phpmd"
전역적으로 설치된 PHP 패키지의 경로를 찾고 싶습니다. which phpmd
사용자로 실행 하면 me
전체 경로를 얻습니다.
/home/me/.composer/vendor/bin/phpcs
그러나 명령을 실행하려고 하면 sudo
아무것도 얻지 못합니다. Composer가 전역적으로 내 사용자에게 추가되었고 sudo에는 존재하지 않기 me
때문 이라고 생각합니다 .PATH
PATH
대신 나는 노력했다
path="$(sudo -u me which phpcs)"
하지만 이것도 실패했다. 그러나 Composer를 통해 설치되지 않은 모든 프로그램에서는 성공합니다. 작곡가를 통해 전역적으로 설치된 PHP 패키지를 찾는 방법은 무엇입니까 sudo
?
내 방식
/home/me/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
sudo(su의) 경로
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
답변1
경로 차이에서 알 수 있듯이 문제는 내 경로에 /home/me/.composer/vendor/bin
.Sudo가 사용자 환경을 상속하지 않는다는 것입니다.
수동으로 가져와야 합니다. 그러나 루트가 해당 경로에서 특정 사용자의 파일을 보기를 원하는 이유는 명확하지 않습니다.
find
파일을 찾으려면 다음과 같은 명령을 사용할 수 있습니다 find /home -name FileName
.
답변2
Julie의 조언과 다른 답변 덕분에 나는 알아냈습니다.
path="$(PATH=$PATH:/home/me/.composer/vendor/bin which phpcs)"
좋은 결과