,이 같은 환경을 :
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin12)
Copyright (C) 2007 Free Software Foundation, Inc.
$ echo $PATH
/Users/r/Desktop/Beryl/usr/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin:/usr/local/bin:/usr/X11R6/bin
로 제대로 which
에 의해보고 된 $ PATH에 irb
의 두 사본이 있습니다
$ which -a irb
/Users/r/Desktop/Beryl/usr/bin/irb
/usr/bin/irb
하지만 실행 irb
은 나는/Users/r/Desktop/Beryl/usr/bin/irb를 얻을 것으로 기대한다. 대신에/usr/bin/irb를 얻습니다 :
$ irb --version
irb 0.9.5(05/04/13) # this is the wrong version
$ /Users/r/Desktop/Beryl/usr/bin/irb --version
irb 0.9.6(09/06/30)
$ /usr/bin/irb --version
irb 0.9.5(05/04/13)
별칭이 없습니다. 나는이 스크립트를 실행하여 떠들썩한 파티를 시작 언급한다 :
#!/bin/sh
export PATH=/Users/r/Desktop/Beryl/usr/bin:${PATH}
exec /bin/bash
에 관계없이, 왜 배쉬는 $ 경로의 첫 번째 인스턴스를 실행하지?
당신은'형 irb'을 실행하고 우리에게 출력을 말할 수 있습니까? – anubhava
@fearless_fool'which'는 bash가 실제로 어떤 일을할지 알려주지 않습니다; 'type'은 않습니다. 별칭이나 함수가 있다면,'type irb'는 그것에 대해 알 것입니다. –
@anubhava : "$ irb => irb는 해시되었습니다 (/ usr/bin/irb)"라고 생각합니다. 그리고 bash/hash/type에있는 문서를 읽었을 때, 나는 왜'which'가 올바른 것을 선택하지 않았는지를 이해합니다. 답변을 게시하고 싶다면 ('hash -r'가 정리를 해줄 것입니다.) 체크 표시를 해 드리겠습니다. –