2012-03-03 15 views
24

同じ引数でgrepコマンドを繰り返し使用していたので、簡単なbashスクリプトを書きました。私は〜/ binから実行していますが、うまく動作します。bashスクリプトから実行したときにgrepが色づけされない

私の問題はです:私のbashスクリプトを実行すると、すべての色づけがなくなります。まったく同じコマンドをコマンドラインに右置くうまくカラーコードの行番号、ファイル名など

はここに私のbashスクリプト

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

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

答えて

40

あなたはおそらくあなたの.bashrcgrep --color=autoの別名としてgrepを定義した、だけどそれはスクリプトによって読み込まれません。スクリプト内で明示的にgrep --colorを使用してください。

+1

hehe:D – PlexQ

+0

--color = autoと一緒に使用しても動作しません。 – juanmf

0

スクリプトを実行すると、新しいシェルが生成されます。この新しい環境には、デフォルトのシェルと同じ設定がありません。色を取り戻す方法については、わからない。あなたは、スクリプトの開始時に、あなたのプロフィールを調達してみてください:

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

またはいずれかのファイルは、少数を示すために、あなたの特定のUNIXの風味(.profileに、.bash_rc、bashrcにの.bash_profile)に意味があります。

+0

'source $ HOME/.bashrc'と 'source $ HOME/.profile'で試しましたが、私のために働く。私はこれが解決策になることを本当に望んでいたので、将来のスクリプトでは '--color'やその他予期せぬパラメータを明示的に指定する必要はありませんでした。 – jairbow

+1

このオプションをスクリプトの環境にエクスポートすることができます: 'export GREP_OPTIONS = ' - color = always'' – Thor

関連する問題