내 경로에서 실행될 실행 파일을 어떻게 결정합니까?

내 경로에서 실행될 실행 파일을 어떻게 결정합니까?

나는 실행 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심볼릭 링크를 추적하고 대상을 공개할 방법이 없다고 가정합니다.

관련 정보