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.

Edit | Attach | Watch | Print version | History: r17 < r16 < r15 < r14 < r13 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r17 - 2010-10-18 - TerryVaskor
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback