On Mon, 14 May 2012, Ethan Grammatikidis wrote:
> On Sun, 6 May 2012 22:49:17 -0700 Amit Uttamchandani wrote:
>
>> [...]
>>
>> hash surf && surf http://localhost/
>
> [...]
>
> hash is a shell feature. bash and others cache the path - all the
> names - and sometimes when you've installed something since starting
> the shell, the shell won't find it. I think it only happens when
> you've removed it from one $PATH dir and installed it to another, in
> bash at least. Using hash in a just-started shell like the one running
> .xinintrc is pointless. :)
`hash [cmd-name]` is an idiom to determine whether a command exists in
$PATH. I've been seeing it a lot recently as `hash [cmd-name] 2>&-` to
suppress the errors when the cmd's not found. On my current system with
only a few shells, the idiom works in bash, sh (symlink to bash), and
zsh, but not in ksh (nor in csh ... but whocares):
bash$ hash dwm ; echo $?
0
bash$ hash nonexistent ; echo $?
bash: hash: nonexistent: not found
1
--
Best,
Ben
Received on Mon May 14 2012 - 06:18:26 CEST