Unix Shell延迟文件名扩展

时间:2018-09-12 22:24:03

标签: environment-variables zsh zshrc

我有一个(java)软件项目,其源文件是几个目录。

如果我在.zshrc文件中执行以下操作:

J=dir1/*.java dir2/*.java dir3/*.java ...
export J

然后我得到环境太大的错误

通常我使用makefile树来一次编译一个目录(程序包),但是有时关系更改太混乱了,所以我这样做:

javac $J

重新编译整个批次。

问题:我可以做点什么来引用列表,例如

J="dir1/*.java dir2/*.java dir3/*.java ..."
export J

环境很小,但使用该变量时会扩展文件名列表。

我知道我可能会喜欢

javac `eval ls $J`

但是我希望调用仍然可以很简单。

1 个答案:

答案 0 :(得分:1)

您可能想要

J=(dir1/*.java dir2/*.java dir3/*.java ...)

(不需要export,因为源.zshrc)。设置J后,您就可以运行

javac $J

或更明确地显示(不带花括号)

javac ${J[@]}

是否需要引用取决于已启用的外壳选项,但是默认情况下zsh中不需要它们。