스크립트의 경로가 실제 경로와 다릅니다.

스크립트의 경로가 실제 경로와 다릅니다.

echo $PATH터미널 창에 있으면 다음이 출력됩니다.

/home/charles/anaconda3/bin:
/home/charles/anaconda3/condabin:
/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
/usr/local/games:/snap/bin:/snap/bin:
/home/charles/.emacs.d/bin

그러나 루트가 아닌 스크립트를 실행하면 다음과 같습니다.

#!/bin/sh
echo $PATH

내 홈 디렉터리의 경로가 아닌 루트 경로만 출력합니다.

/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
/usr/local/games:/snap/bin:/snap/bin

spyder다음에서 제공되는 스크립트에서 실행하려고 합니다 .

$ which spyder
/home/charles/anaconda3/bin/spyder

스크립트가 내 홈 디렉토리의 경로 부분을 인식하도록 하는 방법이 있습니까?

해결됨emacs: 경로에 및를 추가하는 코드를 에서 로 이동했습니다 anaconda.~/.bashrc~/.profile

답변1

스크립트는 하위 쉘에서 실행됩니다. 즉, 대화형/로그인 쉘에 의해 생성됩니다. 서브쉘은 스크립트/프로그램을 실행하기 위한 명시적인 목적으로 생성된 쉘입니다. 서브쉘에 대한 규칙 중 하나는 다음을 통해 액세스할 수 있다는 것입니다."아버지 껍질", 하지만아니요지역 변수.

이는 /home/...변수가 다음과 같다는 것을 보여줍니다.현지의변수, 즉 어딘가에/어떻게든 설정한다는 의미입니다. 아마도 ~/.bashrc?

해결책은 스크립트에서 로컬 PATH 변수를 선언해야 한다는 것입니다. 다음과 같이 이 작업을 수행할 수 있습니다.

export PATH="$PATH:/home/charles/anaconda3/bin:/home/charles/anaconda3/condabin:/home/charles/.emacs.d/bin"

길은 지금이다현지의스크립트/하위 쉘에 저장되며 전역 변수로 전파되지 않습니다.

관련 정보