업데이트: 더 많은 관련 정보가 포함되었습니다. 이를 포함하도록 제안해 주셔서 감사합니다!
저는 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