jairbow
jairbow

Reputation: 1334

grep loses coloring when run from bash script

I wrote a simple bash script because I was using a grep command with the same arguments, repeatedly. I'm running it from ~/bin and it runs just fine.

My problem is: All the coloring is gone when it's run through my bash script. The exact same command put right into the commandline nicely color codes line numbers, filenames, etc.

Here's my bash script

#!/bin/bash
# grep php files inside of myfolder, recursively and with line numbers

grep -rn --include="*.php" "$2" /home/me/myfolder/$1

Upvotes: 56

Views: 9174

Answers (2)

PlexQ
PlexQ

Reputation: 3110

When you run a script, a new shell is spawned to do so. This new environment doesn't have the same settings as your default shell. As to how to get the coloring back, I'm not sure. You might try sourcing your profile at the start of the script:

#!/bin/bash
source $HOME/.bash_profile

or whichever file makes sense on your particular unix flavor (.profile, .bash_rc, .bashrc .bash_profile) to name a few.

Upvotes: 4

Fred Foo
Fred Foo

Reputation: 363547

You've probably defined grep as an alias for grep --color=auto in your .bashrc, but that's not loaded by scripts. Use an explicit grep --color in your script.

Upvotes: 81

Related Questions