Chet Ramey wrote:
type -P echo ls -l $(type -P echo) If you already have `echo' in the command hash table, type -P will return it, since that's what the shell will attempt to execute.
--- It's not in the hash table, but type -P still returns the non-executable. Ishtar:/> ll {,/usr}/bin/echo -rw-r--r-- 2 136753 Nov 19 2013 /bin/echo --w------- 2 136753 Nov 19 2013 /usr/bin/echo
sudo chmod +x /bin/echo
Ishtar:/> type -P echo /bin/echo #correct Ishtar:/> sudo chmod -x /bin/echo #take it away Ishtar:/> hash -r #in theory, purge command hash Ishtar:/> type -P echo #but doesn't use last lookup /usr/bin/echo #switches to returning /usr/bin copy Assuming my hash -r was ignored, and -P would still deliver the last command used, it should have returned /bin/echo... but "/bin/echo" is no longer readable Shouldn't it return "null" or empty string? i.e. I thought I could check for an executable by doing a lookup with -P (not for builtins, obviously) for non builtins, seems that's not safe? Shouldn't it be?