title: Function name valid in bash but not in sh
body: <p>While playing around with bash and sh, I found out that the following is valid in bash:</p>
  
  <pre><code>system.out.println () { printf "$1"; }
  </code></pre>
  
  <p>but not in sh:</p>
  
  <pre><code>sh: `system.out.println': not a valid identifier
  </code></pre>
  
  <p>Why would this difference be there? Does the function defined above violate some convention (POSIX etc.) that causes this error?</p>