On Mon, Feb 04, 2002, Martha H Greenberg wrote about "Re: strange tcsh problems":
> Let me guess, you are running Mandrake, right?  This has to do with
> Mandrake's screwy security policies.  Tcsh keeps a hash of all the
> programs in the path and uses that to detrimine what to execute.
> However, it can't add programs in directories it can't read, and in
> Mandrake, users have only execute permission on directories like /bin
> and /usr, they don't have read.  The "fix" is to give users read access
> to the directories they need to execute files in.

This is the first reasonable explanation raised here (except the possibility
of him having an alias or function, of ls into 'echo "Command not found"' ;)).

However, if it's true (and it is!), it seems like a tcsh bug. True, with
such permissions tcsh will not be able to prebuild a hash of all commands
in /bin, but when running something not in the hash tcsh should at least
have the decency to check the actual path again. The same thing is needed
when a new command is installed. The hash was supposed to make path searches
quicker, not to change the way they work...
Yet another reason to avoid tcsh like the plague...

I just checked, and this bug doesn't seem to exist in zsh. In zsh you also
don't need to "rehash" when a new command is installed (you do need to rehash
if a command changed location in the path, of course). In zsh you can also
turn off the automatic hashing of all the PATH (with the HASH_LIST_ALL,
HASH_DIRS options). Bash never automatically hashs entire directories
anyway, so it can't have this bug either.

But anyway, it's really stupid to have unreadable /bin. Just chmod a+rx /bin.

-- 
Nadav Har'El                        |      Monday, Feb  4 2002, 22 Shevat 5762
[EMAIL PROTECTED]             |-----------------------------------------
Phone: +972-53-245868, ICQ 13349191 |Willpower: The ability to eat only one
http://nadav.harel.org.il           |salted peanut.

=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to