ISG Account Script Conventions
See also:
- ISGScriptSetup - A discussion about the setup program upon which all ISG utilities have a strong dependency.
- ISGTechnicalDirection - Some of the discussion that impacted the setup discussed here
General Rules (with exceptions)
All scripts on the ISG account that are meant for general student use are in the
directory /u/isg/pub/bin and have permission 755.
All scripts that are meant for use by the course accounts will be the directory
/u/isg/bin; they'll be in the cs-marks group (the common groups to those accounts)
and have permission 750. Any script meant to be executed directly from the course accounts
will be in /u/isg/bin, typically as a symlink; helper programs will live in subdirectories.
The entry point for each script to be run from the course account will be via
ISGScriptStartTemplate.
For programs that are compiled binaries, this should next go through
ISGScriptBinaryForkTemplate.
Any shell-scripting should be done in bash, because it's more easily
cross-platform than ksh and more familiar to typical scripting-oriented tutors
than csh. The setup script attempts to enforce bash-3.0 as the standard target version for scripts.
PATH setup
This is the most expensive operation that setup does; as such, it tries to do it only
once; if the environment variable ISG_BIN_SETUP_DIRS exists, it uses that variable's
settings instead of trying to recompute it.
The fallback PATH components will be what /bin/showpath reports as gnu and then standard,
or a guess at a default if /bin/showpath does not exist.
This allows reasonable versions of a lot of software to be found. Every subdirectory
of ~isg/bin is included before this; this ensures that any script in the ISG bin hierarchy
has every other script in its PATH, allowing for a large amount of flexibility in the
placement of each individual script.
At the front of the PATH, required specific versions of bash and perl are specified.
Organization
The main directory contains very few direct programs. In most cases, these programs are symlinks to programs in directories which contain other helper scripts on which that program is dependent. Due to the nature of the setup helper described above, all scripts must have unique names.
The following folders are special:
- The
perl
directory contains perl libraries on which other perl programs can be dependent. This will be part of perl's search path automatically for all code run from the ISG setup environment.
- The
texstyles
directory contains style files that are used by LaTeX in ISG utilities. As with perl, this will automatically be part of LaTeX's search path for all code run from the ISG setup environment.
The
public
folder is also special. It contains in particular utilities that are intended for use by anybody on the student.cs environment. Instead of being symlinked in the
bin
directory, they are instead reachable via the symlink
/u/isg/pub/bin
. Note that this is home to
/u/isg/pub/bin/cs-setup
, which is used to set up a more-user friendly environment and provide the public ISG tools automatically as part of the environment.
The
login
program also deserves special mention; running it as part of the login for the course accounts will ensure that all of these programs are automatically in the course account's PATH (along with appropriately set man pages, etc.)
Access Restrictions
While a few scripts on the ISG account will be world-readable and world-executable, the majority should be restricted to the course account only. All course accounts should be in the
cs-marks
group; the ISG account scripts make this assumption, and use a group of cs-marks with group read/execute permission to control access.