为什么 MSYS grep 不从变量中获取选项?

为什么 MSYS grep 不从变量中获取选项?

设置我的默认选项grep(来自管理系统在 Win7 中)忽略目标文件和特定目录,我导出 GREP_OPTIONS如下~/.profile

export GREP_OPTIONS='--exclude=*.{o,obj,pyc} --exclude-dir={.git,_Output}'
export GREP_COLOR='1;32'

即使重新启动 shell 以使我的.profile生效,我对的调用grep仍然会搜索目标文件。但是,该GREP_COLOR变量似乎有效。我甚至尝试在执行之前在同一个 shell 中明确设置我的选项grep

$ grep --version
GNU grep 2.5.4

Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ export GREP_OPTIONS='--exclude=*.{o,obj,pyc} --exclude-dir={.git,_Output}'
$ echo $GREP_OPTIONS
--exclude=*.{o,obj,pyc} --exclude-dir={.git,_Output}
$ grep $GREP_OPTIONS -r foo .
grep: ./bar.o: Permission denied
./baz.c:My foo text
$ grep --exclude=*.{o,obj,pyc} --exclude-dir={.git,_Output} -r foo .
./baz.c:My foo text

我如何才能grep自动GREP_OPTIONS使用~/.profile

答案1

尝试

导出 GREP_OPTIONS='--排除=*.{o,obj,pyc}--exclude-dir={.git,_Output}'

即将--exclude文件名模式括在双引号中。

答案2

尝试将变量放在 .profile 中,并添加如下内容:

alias grep='grep $GREP_OPTIONS'

这也许就能解决问题。

相关内容