[server] 어디서나 스크립트를 실행

스크립트가 있습니다 :

#!/bin/bash
echo "$(dirname $(readlink -e $1))/$(basename $1)"

여기에 있습니다 : /home/myuser/bin/abspath.sh실행 권한이 있습니다.

실행 echo $PATH하면 다음과 같은 결과가 나타납니다./usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myuser/bin

모든 디렉토리에서 전화 abspath <some_path_here>를 걸고 스크립트를 호출 할 수 있기를 바랍니다 . 나는 bash를 사용하고 있는데, 내가 뭘 잘못하고 있니?



답변

입력하려고 abspath하지만 프로그램의 이름이 지정 abspath.sh됩니다. 문제는 PATH에 있는지 여부에 관한 것이 아니라 단순히 이름을 사용하여 호출하지 않는다는 사실입니다.

두 가지 옵션이 있습니다.

  1. abspath.sh대신 입력하십시오 .
  2. 프로그램 이름을로 바꿉니다 abspath.

답변

이 코드는 쉘 함수로 코딩 할 수있을 정도로 작습니다.

abspath() {
    echo "$(dirname "$(readlink -e "$1")")/$(basename "$1")" 
} 

그리고 네, 당신은 모든 인용문을 원합니다.


답변

.bashrc 파일에 명령을 추가하여 별명을 설정하십시오.

alias abspath='sh /home/myuser/bin/abspath.sh'

그리고 파일을 소싱하는 것을 잊지 마십시오.


답변

bash 스크립트의 이름을 바꾼 abspath다음 bin디렉토리 로 옮길 것 입니다. abspath언제 어디서나 전화를 걸 수 있습니다


답변

세 번째 옵션은 abspath.sh 스크립트를 가리키는 abspath라는 별명을 작성하는 것입니다.


답변