나는 보통 cd Directory/Directory/
쉘 디렉토리를 가리키고 를 입력하는 데 익숙 bash shell.sh
하지만, 한 줄로 내 쉘과 위치를 실행하는 더 쉬운 방법이 있는지 궁금합니다. 저는 다른 폴더로 자주 이동합니다.
예: alpha라는 쉘 스크립트가 포함된 unix 폴더
cd Desktop/unix
bash alpha.sh
답변1
스크립트 파일을 실행 가능하게 만드는 경우:
chmod o+x alpha.sh
#!/bin/bash
호출하는 데 사용할 필요가 없는 적절한 shebang()을 맨 위에 포함합니다 bash
. man chmod
설명을 보려면 참조 를 o+x
참조하세요 a+x
.
경로는 Rahul이 제안한 대로 추가하거나 $PATH에 추가하지 않고 비슷한 작업을 수행할 수 있습니다. 예를 들면 다음과 같습니다.
export SCRIPTS=~/Desktop/unix
이제 다음 실행 파일 중 하나를 사용할 수 있습니다.
$SCRIPTS/alpha.sh
답변2
PATH
이를 시스템 환경에서 설정할 수 있습니다 .
export PATH=$PATH:/absolute/path/Desktop/unix
위 줄을 파일에 넣을 수도 ~/bashrc
있으며 그런 다음 경로를 다시 설정할 필요가 없습니다.
참고:- 스크립트는 해당 위치에서 실행 가능해야 하며 그런 다음 모든 디렉터리에서 스크립트를 실행할 수 있습니다.
인용하다이것자세한 내용은 페이지
답변3
다른 관점에서 답변하면 *nix 환경을 더 잘 이해하는 데 도움이 될 수 있습니다.
*nux에서 알고 있는 모든 명령/유틸리티는 일부 또는 다른 디렉토리에 존재하며, whereis
, 또는 which
명령을 사용하여 찾을 수 있습니다.
예
$ which ls
/bin/ls
$ which sort
/usr/bin/sort
그렇다면 명령을 실행하려는 대상을 어떻게 찾을 수 있습니까?
답은 PATH
변수입니다. 를 실행하면 콜론 으로 구분된 디렉터리 목록이 echo $PATH
표시됩니다 .:
$PATH에 대한 출력 예
/home/mtk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.9.1/bin/:/usr/local/ant/apache-ant-1.8.3/bin
따라서 실행 파일을 이러한 위치 중 하나에 배치하면 다른 시스템 명령처럼 실행할 수 있습니다. PATH
또는 전체 셸에서 사용할 수 있도록 변수에 추가하고 내보내어 이 목록에 자신이 정의한 디렉터리를 추가할 수 있습니다.
export PATH=$PATH:/home/mtk/myUtilities/bin
.bashrc
셸을 시작할 때마다 위 명령을 실행할 필요가 없도록 이 특정 줄을 파일에 추가할 수 있습니다 .
재미로
변수를 변경하고 비워두면 다시 적절하게 재설정될 PATH
때까지 쓸모없는 쉘이 생성됩니다 .PATH
$ export PATH=""
$ ls
bash: ls: No such file or directory
$ which pwd
bash: which: No such file or directory