내 $HOME/bin 폴더에 sudo 스크립트

내 $HOME/bin 폴더에 sudo 스크립트

$HOME/bin내 폴더에 사용해야 하는 것이 하나 있습니다 sudo.

내가 달리면

sudo <nameofthescript>

알겠어요

sudo: <nameofthescript>: command not found

$PATH이 스크립트를 에 추가하는 가장 좋은 방법은 무엇입니까 sudo?

그것을 옮겨야 할까요 /usr/local/sbin?

폴더 를 만들어야 하나요 /root/bin?

답변1

sudoPATH로컬 스크립트를 찾을 수 없도록 제한이 설정되어 있습니다 . 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

관련 정보