나는 실행 which
하고 다음 정보를 얻습니다.
brendan$ which python
/opt/local/bin/python
brendan$ which -a python
/opt/local/bin/python
/usr/bin/python
brendan$ ls -l /opt/local/bin/python
lrwxr-xr-x 1 root admin 24 22 Jul 00:45 /opt/local/bin/python -> /opt/local/bin/python2.4
brendan$ python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
...
(this is the python version in /usr/local/bin)
내 요점은 which
우선 순위가 높은 기본 실행 파일을 말하지 않았다는 것입니다. 이것을 어떻게 찾을 수 있나요?
저는 Macbook에서 OSX 10.6을 실행하고 있지만 이 문제는 UNIX 유형 사용자에게 흔히 발생합니다.
고쳐 쓰다:내 시스템에서 중복되는 Python 버전을 많이 제거했고(최소 6개 버전이 있음) PATH
여러 초기화 파일에서 잘못된 선언을 다양하게 제거했습니다. 어떻게든 이 프로세스 중에 새 셸은 이제 예상된 출력을 표시합니다(즉, which
표시되고 /opt/local/bin/python
이것이 실행된 것입니다). 어쨌든, 도와주셔서 감사합니다!
답변1
which
실행되지 않을 때 얻는 출력 -a
은 실행될 출력입니다. (두 번째가 -a
세 번째보다 바람직합니다.)
이는 (셸 내에서) 다른 실행 파일보다 먼저 실행되는 셸의 내장, 별칭 및 함수를 고려하지 않습니다.
따라서 대신 사용하는 것이 좋습니다 type
.
답변2
Python에 다른 이름( )을 지정하지 않는 한 표시된 항목만 which python
콘솔에서 사용할 항목입니다 alias python='/usr/bin/python'
.
답변3
해당 매뉴얼 페이지에 따라 which
다음 명령을 사용하여 PATH 변수의 구성 요소를 검색하십시오.Bash와 동일한 알고리즘즉, PATH의 각 구성 요소를 순서대로 검색합니다. 따라서 관찰할 수 있듯이 where ( 없이 -a
)는 PATH에서 찾은 첫 번째 일치 항목만 표시합니다.
귀하의 예는 첫 번째 일치 항목이 심볼릭 링크이기 때문에 "주 실행 파일"을 반환하지 않는다는 점에서 약간 특별합니다. 맨페이지에는 심볼릭 링크에 대한 언급이 없으므로 which
심볼릭 링크를 추적하고 대상을 공개할 방법이 없다고 가정합니다.