발행하면 alias --help
다음과 같은 결과가 출력됩니다.
alias: usage: alias [-p] [name[=value] ... ]
내가 이해한 바로는 다음과 같이 별칭을 입력하고 스크립트 파일에 대한 실제 경로를 제공하기만 하면 됩니다.
alias scr = /usr/local/tools/some_script.sh
그러나 별칭을 생성할 때 때때로 2개의 경로가 제공되는 것을 발견했습니다. 예를 들어 alias scr
회사 컴퓨터에서 명령을 실행하고 다음과 같은 출력을 얻었습니다.
alias scr = 'sudo /bin/sh /usr/local/tools/some_script.sh'
/bin/sh
이 경우 추가 경로를 도입하는 목적은 무엇입니까?
/bin/sh에는 bash 디렉토리에 대한 심볼릭 링크만 포함되어 있습니다.
ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 6 2017 /bin/sh -> bash
답변1
정의된 별칭별
alias scr='sudo /bin/sh /usr/local/tools/some_script.sh'
(주변에 공백이 있으면 오류가 발생합니다 .) 호출은 =
스크립트의 경로 이름을 인수로 사용하여 쉘 인터프리터를 명시적으로 호출하여 sudo
스크립트를 실행합니다 ./usr/local/tools/some_script.sh
/bin/sh
실행 파일의 경로 이름입니다 /bin/sh
(귀하의 경우 가리키는 심볼릭 링크이지만 중요하지 않습니다). 쉘 스크립트를 실행하는 데 사용됩니다. 이 경우 at에 대한 스크립트는 아마도 에 대해 작성된 스크립트이므로 별칭은 해당 스크립트가 인터프리터로 호출되도록 보장합니다.sh
/bin
bash
sh
/usr/local/tools/some_script.sh
sh
/bin/sh
스크립트가 실행 가능하고 #!
첫 번째 줄에 유효한 스크립트 해석기를 가리키는 -line이 있는 경우 /bin/sh
이 비트를 제거할 수 있습니다 .
즉, 별칭을 사용하면 명령을 실행할 수 있습니다.
/bin/sh /usr/local/tools/some_script.sh
루트 ID를 입력하면 됩니다 scr
.