Reputation: 1315
When I did which groovy
, I got the below output:
/usr/local/bin/groovy
So I went ahead and created a helloworld.groovy
with the below content
#!/usr/local/bin/groovy
println "hello world"
After that I did chmod +x helloworld.groovy
and attempted to run the file with ./hellworld.groovy
and sadly, I got this error ./helloworld.groovy: line 2: print: command not found
I could get rid of the error by changing to
#!/usr/bin/env groovy
println "hello world"
Why would the first method cause the error?
Upvotes: 59
Views: 173955
Reputation: 127
#!groovy
println("hello world!")
$ chmod +x script.groovy
$ ./script.groovy
Upvotes: 0
Reputation: 1469
#!/bin/sh
sed '1,2d' "$0"|$(which groovy) /dev/stdin; exit;
println("hello");
Upvotes: 0
Reputation: 11
It will work on Linux kernel 2.6.28 (confirmed on 4.9.x). It won't work on FreeBSD and other Unix flavors.
Your /usr/local/bin/groovy
is a shell script wrapping the Java runtime running Groovy.
See the Interpreter Scripts section of EXECVE(2) and EXECVE(2).
Upvotes: 0
Reputation: 10689
You need to run the script like this:
groovy helloworld.groovy
Upvotes: 88