>> Why is GREP_OPTIONS deprecated?    > The main reason is that it breaks shell scripts. Scripts generally  > expect 'grep' to behave as specified in POSIX and as implemented via  > traditional 'grep' implementations. GREP_OPTIONS breaks this.   > Some shell scripts work around the problem by explicitly unsetting  > GREP_OPTIONS before they call 'grep'. However, most scripts don't, I  > expect because their authors are not generally aware of this  > compatibility issue. So in practice the convenience of GREP_OPTIONS can be more trouble than it's worth. Here's a simpler fix: grep should test for an interactive shell before parsing GREP_OPTIONS. [There are a number of methods outlined in the man page](http://www.tldp.org/LDP/abs/html/intandnonint.html). At least two of these methods (PS1[1] and test "$($0)” are POSIX compatible if i’m not mistaken. Interactive shell users can still export GREP_OPTIONS to get a persistent configuration. But this way, shell scripts get grep without the variable set, and if they really need to, can still use those options by calling “grep $GREP_OPTIONS …” explicitly.