title: Unix shell delay filename expansion
body: <p>I have a (java) software project with source file is several directories.</p>
  
  <p>If I do the following in my .zshrc file:</p>
  
  <pre><code>J=dir1/*.java dir2/*.java dir3/*.java ...
  export J
  </code></pre>
  
  <p>Then I get errors that the environment is too large</p>
  
  <p>Normally I use a makefile tree that compiles one directory (package) at a time but sometimes the relationship changes are too messy so I do:</p>
  
  <pre><code>javac $J
  </code></pre>
  
  <p>To recompile the whole lot.</p>
  
  <p>Question: Can I do something to quote the list, like</p>
  
  <pre><code>J="dir1/*.java dir2/*.java dir3/*.java ..."
  export J
  </code></pre>
  
  <p>So that the environment is small but have the variable expands the filename list when it is used.</p>
  
  <p>I know I could something like</p>
  
  <pre><code>javac `eval ls $J`
  </code></pre>
  
  <p>but I was hoping the invocation could still be simple.</p>