다양한 스크립트가 포함된 디렉터리를 내 PATH에 추가하려고 시도했지만 디렉터리 외부에서 호출하면 스크립트가 실행되지 않습니다.

다양한 스크립트가 포함된 디렉터리를 내 PATH에 추가하려고 시도했지만 디렉터리 외부에서 호출하면 스크립트가 실행되지 않습니다.

업데이트: 더 많은 관련 정보가 포함되었습니다. 이를 포함하도록 제안해 주셔서 감사합니다!

저는 Linux를 처음 접했고 다른 사람이 만든 스크립트를 실행하려고 합니다. 최근에 변수에 대해 알게 되었고 터미널 어디에서나 호출할 수 있도록 변수 $PATH에 스크립트 폴더를 추가해야 한다는 것을 깨달았습니다 . $PATH그런데 스크립트가 들어있는 폴더를 변수에 추가해도 그 $PATH안에 있는 스크립트가 인식되지 않습니다.

하단에 포함되도록 텍스트 편집기에서 bashrc 파일을 편집했습니다.

#Modify $PATH
export PATH="/home/eli/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

내 스크립트는 다음 위치에 있으며 /home/eli/bin전체 경로를 지정하지 않으면 이 저장소가 내 $PATH 변수에 있더라도 스크립트가 실행되지 않습니다.

이것이 내 $PATH 변수입니다.

(에 따르면)eli@eli-XPS-13-7390-2-in-1:~$에코 $PATH
/home/eli/miniconda3/bin:/home/eli/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games :/usr/로컬/게임

내 스크립트 권한은 다음과 같습니다.

(에 따르면)eli@eli-XPS-13-7390-2-in-1:~$ ls -al ~/bin/trim2bRAD_2barcodes_noAdap.pl
-rwxr-xr-x 1 eli eli 3064 2018년 5월 19일/home/eli/bin/trim2bRAD_2barcodes_noAdap.pl

파일의 정확한 경로를 지정하지 않고 디렉터리에서 스크립트를 실행하려고 할 때의 출력은 다음과 같습니다.

(에 따르면)eli@eli-XPS-13-7390-2-in-1:~$ ./trim2bRAD_2barcodes_noAdap.pl
bash: ./trim2bRAD_2barcodes_noAdap.pl: 해당 파일이나 디렉터리가 없습니다.

답변1

쉘이 변수에 나열된 디렉토리에서 실행 파일을 검색하도록 하려면 $PATH명령줄에서 실행 파일 경로를 지정하지 마십시오.

그러니 이러지 마세요

./trim2bRAD_2barcodes_noAdap.pl

$PATH이렇게 하면 쉘이 전혀 찾을 수 없기 때문입니다( ./실행 파일에 대한 명시적인 경로를 제공했습니다).

대신에 그냥 사용하세요

trim2bRAD_2barcodes_noAdap.pl

/home/eli/bin또한 의 시작 부분 에 추가하면 다음과 $PATH같이 말할 수 있습니다.

PATH=$HOME/bin:$PATH

가정이 $HOME확장됩니다 . 즉, 변수를 매우 구체적인 디렉토리 목록으로 설정하려는 경우 및/또는 시스템이 합리적인 기본값을 제공했다고 신뢰하지 않는 경우가 아니면 /home/eli모든 디렉토리를 나열할 필요가 없습니다 . 이미 환경 변수이므로 $PATH내보낼 필요가 없습니다 .PATH

관련 정보