$HOME/bin
내 폴더에 사용해야 하는 것이 하나 있습니다 sudo
.
내가 달리면
sudo <nameofthescript>
알겠어요
sudo: <nameofthescript>: command not found
$PATH
이 스크립트를 에 추가하는 가장 좋은 방법은 무엇입니까 sudo
?
그것을 옮겨야 할까요 /usr/local/sbin
?
폴더 를 만들어야 하나요 /root/bin
?
답변1
sudo
PATH
로컬 스크립트를 찾을 수 없도록 제한이 설정되어 있습니다 . env_reset
특정 사용자 등을 대상 으로 하지 않도록 구성할 수 있지만 아마도 가장 간단한 방법은 mysudo
다음을 수행하는 한 줄 스크립트를 직접 작성하는 것입니다.
#!/bin/sh
exec sudo -s PATH="$PATH" exec "$@"
mysudo somecommand ...
그런 다음 교체 라고 말합니다 sudo somecommand ...
. sudo에게 셸을 실행 PATH
하고 원래 상태로 다시 설정한 다음 원래 경로에 있는 명령을 실행하도록 요청합니다 .
답변2
PATH
실행 프로그램이 있는 특정 디렉토리 세트가 있는 Linux 및 Windows와 같은 운영 체제의 환경 변수입니다. 귀하의 질문에 따르면 실행 가능한 스크립트는 $HOME/bin
디렉토리 아래에 배치됩니다. 따라서 PATH에 없는 스크립트를 실행하려면 운영 체제가 파일에 접근하여 실행할 수 있도록 전체 파일 구조 경로를 제공해야 합니다. 예를 들어,
sudo $HOME/bin/<nameofthescript>
항상 전체 파일 경로를 제공하고 싶지 않은 경우 다음 명령을 사용하여 파일 경로를 실제 환경에 넣을 수 있습니다. 스크립트를 $HOME/bin
디렉터리 에 저장했다고 가정해 보세요 .
PATH=$PATH:$HOME/bin
위 명령은 bin 디렉터리를 환경 경로에 추가하며, 이를 <nameofscript>
시스템 어디에서나 사용할 수 있습니다. 또한 이것은 bash가 실행될 때까지만 작동합니다. 새 터미널에서 동일한 작업을 시도하면 PATH가 기본값으로 변경됩니다. 영구적으로 만들려면 $HOME/.profile
또는 파일 에 다음 줄을 추가해야 합니다 $HOME/.bashrc
.
export PATH=$PATH:$HOME/bin
루트 사용자만 어디에서나 실행할 수 있도록 허용하려면 또는 디렉토리 <nameofscript>
아래에 배치하면 됩니다 ./sbin
/usr/sbin