Por que bash não respeita $ {PATH} e / ou links simbólicos? [duplicado]

1

Estou no OSX e instalei o Homebrew para obter os coreutils GNU. Eu queria que gsort fosse usado em vez do comando sort pré-instalado, então criei um link simbólico para gsort . Minha experiência limitada me diz que executar sort do CL ou de um script usará gsort , mas não é isso que está acontecendo:

$ 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>.

Observe que, ao verificar a versão de gsort e sort (ao usar o caminho absoluto para o symlink), ela mostra corretamente a versão mais nova do coreutils, mas executar sort ainda me fornece a versão antiga e pré-instalada. Alguém pode me dizer por quê?

    
por Linoob 24.03.2016 / 16:35

1 resposta

2

Se você iniciou sort nesta mesma sessão de shell antes de instalar seu link simbólico, bash armazenou em cache os resultados de pesquisa de caminho. Use type sort para verificar se ele responde a sort is hashed (/usr/bin/sort) .

    
por 24.03.2016 / 16:56

Tags