환경을 추가하고 해당 환경에서 프로그램을 실행하려고 할 때 PATH가 작동하지 않는 이유는 무엇입니까?

환경을 추가하고 해당 환경에서 프로그램을 실행하려고 할 때 PATH가 작동하지 않는 이유는 무엇입니까?

cow아래에 프로그램을 배치한 /opt다음 추가하여 .bashrc를 편집했습니다.

export PATH=“$PATH:/opt” 

이제 $PATH는/opt

cow하지만 직접 실행하고 싶을 때

$ cow
The program 'cow' is currently not installed. You can install it by typing:
sudo apt-get install fl-cow

아직은 달려야 해/opt/cow

뭐가 문제 야?

답변1

제가 보기엔 잘못된 유형의 따옴표("")와 ("")를 사용하고 있는 것 같습니다.

echo $PATH
/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
sudo bash -c 'echo \$0 this is a test' >/opt/test.sh;sudo chmod +x /opt/test.sh
anon@masterbox:~$ export PATH=“$PATH:/opt”
anon@masterbox:~$ test.sh
bash: test.sh: command not found
anon@masterbox:~$ . .bashrc
anon@masterbox:~$ export PATH="$PATH:/opt"
anon@masterbox:~$ test.sh
/opt/test.sh this is a test
anon@masterbox:~$ 

편집: 여기에서 문제를 더 명확히 하기 위해 내가 원하는 방식으로 수행하면 어떤 일이 발생하는지 확인하세요.

$ echo $PATH
# this is correct
/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ export PATH=“$PATH:/opt” 
$ echo $PATH
# this is incorrect
“/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt”
$ 

Bash는 이런 방식으로 PATH 변수를 올바르게 해석할 수 없습니다. 유니코드 따옴표는 UNIX 시스템에서 이 방식으로 작동하지 않습니다. 이것이 귀하의 질문에 대한 답변이 되기를 바랍니다.

답변2

나에게는 $PATH를 정의할 수 있는 파일 세트가 2개 있습니다.
1. ~/.profile, ~/.bashrc 및 이에 상응하는 /etc 파일과 같은 bash 파일
2. /etc/enviroment 및 ~/.pam_environment
일부 위치 모든 사용자에게 전역적이며 일부는 사용자별로 다릅니다.
다음 위치 중 한 곳에서 사용할 명령을 작성하는 것이 좋습니다.~파일이 있는 홈 디렉터리를 사용하는 사용자에게만 적용됩니다.
예를 들어 Robertus 사용자와 같이 ~/.bashrc에 경로를 작성하는 경우 루트로 변경하면 경로는 자신의 ~/.bashrc 및 co를 따라 루트 1로 변경됩니다.

내 답변이 도움이 되었기를 바랍니다.

답변3

다음을 실행하면 소가 작동합니까 /opt/cow? 그렇지 않은 경우 'cow' 파일의 모드를 확인하십시오. 실행 비트를 설정해야 합니다. 그렇지 않은 경우 다음을 사용하십시오.chmod +x /opt/cow

관련 정보