Bash가 ${PATH} 및/또는 심볼릭 링크를 존중하지 않는 이유는 무엇입니까? [복사]

Bash가 ${PATH} 및/또는 심볼릭 링크를 존중하지 않는 이유는 무엇입니까? [복사]

저는 OSX를 사용하고 있으며 GNU coreutils를 얻기 위해 Homebrew를 설치했습니다. 대신 gsort사전 설치된 명령을 사용 하고 싶었 sort기 때문에 에 대한 심볼릭 링크를 만들었습니다 gsort. 제한된 경험에 따르면 sortCL이나 스크립트 내에서 실행하면 가 사용되지만 gsort그렇지 않습니다.

$ which gsort; which sort
/usr/local/bin/gsort
/usr/local/bin/sort
$ ll /usr/local/bin/ | fgrep sort
1083450 lrwxr-xr-x  1 alex  admin  -   34B Mar 23 15:56:52 2016 gsort@ -> ../Cellar/coreutils/8.25/bin/gsort
1083466 lrwxr-xr-x  1 alex  admin  -   35B Mar 23 15:56:52 2016 gtsort@ -> ../Cellar/coreutils/8.25/bin/gtsort
1088327 lrwxr-xr-x  1 alex  admin  -   34B Mar 23 16:57:41 2016 sort@ -> ../Cellar/coreutils/8.25/bin/gsort
$ echo ${PATH} 
/usr/local/opt/gnu-sed/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
$ gsort --version | fgrep GNU
sort (GNU coreutils) 8.25
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
$ /usr/local/bin/sort --version | fgrep GNU
sort (GNU coreutils) 8.25
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
$ sort --version | fgrep GNU
sort (GNU coreutils) 5.93
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.

gsort및 버전을 확인할 때 sort(symlink의 절대 경로를 사용할 때) 최신 coreutils 버전이 올바르게 표시되지만 실행하면 여전히 sort사전 설치된 이전 버전이 표시됩니다. 누구든지 이유를 말해 줄 수 있습니까?

답변1

sort심볼릭 링크를 설치하기 전에 동일한 셸 세션에서 시작하면 bash경로 검색 결과가 캐시됩니다. type sort답변 여부를 확인 하는데 사용됩니다 sort is hashed (/usr/bin/sort).

관련 정보