[X-Unix] unsubscribe

avijit at physics.drexel.edu avijit at physics.drexel.edu
Mon Dec 13 11:48:45 PST 2004



_____________________________________________________________________
Avijit Ghosh, Ph.D.		   Drexel University, Dept of Physics
Asst. Professor                                      3141 Chestnut st
Phone: 215-895-2726                            Philadelphia, PA 19104
Fax: 215-895-5934              Web: http://silicon.physics.drexel.edu

On Mon, 13 Dec 2004, William H. Magill wrote:

> On 13 Dec, 2004, at 06:22, Russell McGaha wrote:
> 
> > Actually yes and no; I am relatively new to command line programming.
> > After I chmoded the file it ran [is running] just fine as a cron job, and
> > before I changed my shell to bash, was running just fine as a sourced
> > file .
> 
> That is correct behavior.  That is the way in which "shell programming" works.
> 
> A couple of Unix concepts (quite generalized, go read a Unix text for more
> explicit explanations):
> 
> EVERY file is nothing but a string of characters. It is read starting at the
> first byte, that read progresses to the end-of-file. The "thing" reading the
> file can be a "program" or an "interpreter," typically called a "shell" --
> tcsh, bash, zsh, ksh and sh all being valid "shells." Perl is another common
> interpreter, as are  Tcl/tk and Java.
> 
> ANY text file can be "sourced" by any interpreter -- The interpreter reads the
> file and if that file contains valid commands for that shell they will be
> "executed," that is to say, "interpreted" by the shell. If they are not
> "commands" which that interpreter understands, the interpreter will generate
> errors.
> 
> If your default shell was tcsh and you "sourced" a file containing tcsh
> commands it would work as expected. However, when you changed your shell to
> bash, and sourced that same file, bash found no valid commands... just as you
> experienced.
> 
> "Rational" programmers always put a shebang line as the first line of any
> shell script -- in that way they remind themselves WHICH shell it was written
> for, AND, more importantly, it allows that script to be "executed" as a
> "stand-alone" program.
> 
> When a file is sourced, the "shebang" line -- the first line of the file
> ("#!/bin/tcsh", "#!/bin/bash", "#!/bin/zsh") is simply ignored.  It is treated
> as a comment because of the leading "#" by the shell's interpreter.
> 
> For a "file" to become an executable program (i.e. something with the execute
> bits set), the first line  of the file is examined by they system call,
> "exec." Exec determines just what it is being asked to look at, and therefore
> what it should do with it. A compiled binary file is no different than a shell
> script file -- they are both merely strings of bits and bytes. However, the
> beginning of the file contains information which tells exec exactly what
> format the file is in... compiled binary or text.
> If it is a text file, the first line of the file is examined to determine what
> interpreter to invoke.
> If there is no shebang line present to invoke an interpreter you will get lots
> of funny errors when you try to exec that love letter you wrote. But with the
> shebang line present, an interpreter is invoked to read and interpret the
> remaining data in the file.
> 
> There is lots of other "magic" taking place, ("man magic" for one example)
> including games played with the filename extension -- .sh, .tcsh, .bash, .pl,
> .jar, etc. -- which simply makes life "easier" for the end user.
> 
> "Flexability" is a key point in Unix and enunciated in Perl -- There is more
> than one correct way to do things!  Just as the tuber which grows underground
> can correctly be called a Russet, Idaho or Potato, except in very specific
> situations, the difference does not matter.
> 
> T.T.F.N.
> William H. Magill
> #  Beige G3 - Rev A motherboard - 768 Meg
> #  Flat-panel iMac (2.1) 800MHz - Super Drive - 768 Meg
> #  PWS433a [Alpha 21164 Rev 7.2 (EV56)- 64 Meg]- Tru64 5.1a
> #  XP1000  [Alpha EV6]
> magill at mcgillsociety.org
> magill at acm.org
> magill at mac.com
> whmagill at gmail.com
> 
> 
> _______________________________________________
> X-Unix mailing list
> X-Unix at listserver.themacintoshguy.com
> http://listserver.themacintoshguy.com/mailman/listinfo/x-unix
> 


More information about the X-Unix mailing list