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)

おすすめ記事