On Thu, Jun 27, 2013 at 7:55 PM, Todd S. [email protected]
wrote:
Thanks for the responses. I should have been a bit more clear about my
UNIX skills. Not great, but I can move around and set permissions and
look at things like environment variables. So I had already set things
to execute. I still can’t see what is up. Here is the code(again) and
files and symbolic links & path & permissions
Here is my beautiful code:
#!/usr/bin ruby
Change that to: #!/usr/bin/env ruby
/usr/lib/lightdm/lightdm:
lrwxrwxrwx 1 root root 18 Jun 20 16:30 ruby → /usr/bin/ruby1.9.1
And everything is executable
–
Posted via http://www.ruby-forum.com/.
Everything looks fine except for the one change I mentioned above.
With the shebang line, you are telling bash to execute “/usr/bin/env”,
passing it one parameter, “ruby”. The “env” program will then launch the
appropriate “ruby” executable.
The reason for this is that “shebang” line must specify a complete path
to
an executable (either an absolute path or one relative to the current
working directory; relative paths are problematic though so everyone
uses
absolute paths). Since the “ruby” executable may be installed in a
different location on different systems, the convention is to instead
run
ruby via the “env” command for which it is safe to assume it’ll be
available in the /usr/bin directory.
The “env” command lets you run other commands in a modified environment.
However, in this case, it’s just being used for the fact that it’ll look
up
whatever command you tell it to run using the PATH environment variable.
So, as long as an executable (or a symlink to one) is in one of the
directories in your PATH (which is the case on your system) then “env”
can
run it.
You can try it manually inside your shell (the “^D” mean, type CTRL-D;
you
won’t actually see the “^D” characters):
$ /usr/bin/env ruby
puts “Hi”
^D
Hi
$
The above runs ruby which reads it’s input (ruby code) from the
terminal.
The CTRL-D tells ruby it’s reached the end of the file so it will exit,
at
which point it will run whatever ruby code you entered (outputting “Hi”
to
the terminal).