Found a buglet in this file this week.
The /etc/profile file is the first file executed by a Korn shell session on login, but it has been hijacked by Bash. On Linux the Korn shell is not used much, except by training companies of course. I doubt that /etc/profile is ever tested with ksh, so it is not surprising there is a bug, however it is a shame that the mistake is such a simple one - doesn't give one much confidence.
On sign-on to ksh we get a syntax error in /etc/profile, on the line:
if [ $EUID = 0 ]; then
The EUID shell variable is set by Bash, and is a read-only value giving the effective user-id (if you want to know the difference between effective and real user-ids, come on QAs Unix Programming course). The code is checking for a 'root' user. On Korn shell this variable is not set.
The fix is quite easy, quote the variable:
if [ "$EUID" = 0 ]; then
ALWAYS quote variables in single [. One of the effects of using [[ is that quotes are not necessary around a variable, and if the authors had come on QAs Mastering BASH Shell Scripts course, they would have known that.
Subscribe to:
Post Comments (Atom)
1 comment:
Oh, and by the way, if you want to be pedantic, when testing numbers they should really use (( ... )), except that == is required as well.
Post a Comment