[daip] aips start-up
Min S. Yun
myun at bonito.astro.umass.edu
Mon May 14 17:25:25 EDT 2007
Here it is. Thank you for looking into this. -- Min
On Mon, 14 May 2007, Amy Mioduszewski wrote:
> Could you send me your START_AIPS?
>
> Thanks,
>
> Amy
>
-------------- next part --------------
#!/bin/sh
#-----------------------------------------------------------------------
#; Copyright (C) 1995-1998, 2000-2004, 2006
#; Associated Universities, Inc. Washington DC, USA.
#;
#; This program is free software; you can redistribute it and/or
#; modify it under the terms of the GNU General Public License as
#; published by the Free Software Foundation; either version 2 of
#; the License, or (at your option) any later version.
#;
#; This program is distributed in the hope that it will be useful,
#; but WITHOUT ANY WARRANTY; without even the implied warranty of
#; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#; GNU General Public License for more details.
#;
#; You should have received a copy of the GNU General Public
#; License along with this program; if not, write to the Free
#; Software Foundation, Inc., 675 Massachusetts Ave, Cambridge,
#; MA 02139, USA.
#;
#; Correspondence concerning AIPS should be addressed as follows:
#; Internet email: aipsmail at nrao.edu.
#; Postal address: AIPS Project Office
#; National Radio Astronomy Observatory
#; 520 Edgemont Road
#; Charlottesville, VA 22903-2475 USA
#-----------------------------------------------------------------------
# Usage: START_AIPS [OLD, NEW, or TST]
# [TV=[disp][:][host]] [usock [unew]] [tvok] [notv]
# [DA=host,host,...] [DA=default]
# [TP=tphost,tphost,...] [tpok]
# [PR=lpdev]
# [NORL] [NOEX] [options passed to AIPSEXEC]
#-----------------------------------------------------------------------
# This script defines AIPS system variables and starts AIPS.
#
# Options: TV=d:h for the name of an AIPS TV to use. See TVDEVS.SH.
# "d" is the display host, "h" is the TV host. The
# default display host will be set by the DISPLAY
# environment variable (or if not set, current host).
# The default TV host is the current (login) host.
# If DISPLAY is, e.g. FOO:10.1, the number is used
# appropriately when launching the servers.
# TV=local Use Unix based sockets for TV and other servers.
# TV=local:n Specify which local Unix socket TV to use; n=0
# means a new instance higher than existing numbers.
# NOTE: Use extended hex, e.g. A for 10, Z for 35
# USOCK Obsolete version of TV=local.
# UNEW Obsolete version of TV=local:0
# NOTV if no TV is wanted. Also inhibits MSGSRV,TEKSRV
# TVOK to inhibit re-launching of TV, msg, tek servers
# OLD for the OLD version of AIPS, passed to AIPSEXEC
# NEW for the NEW version of AIPS, passed to AIPSEXEC
# TST for the TST version of AIPS, passed to AIPSEXEC
# CVX for the CVX version of AIPS, passed to AIPSEXEC
# REMOTE forces NOTV, passed to AIPSEXEC (also REM or TEK)
# DA=xxx Use disks from machine xxx in addition to local
# and required ones. See DADEVS.SH/PL for more...
# TP=xxx Make sure tape servers are running on machine xxx.
# TPOK Inhibit launching of TPMON's on LOCAL machine
# PR=xxx Select initial printer number xxx (see PRDEVS.LIST)
# NORL Disable use of GNU readline library for AIPS input.
# NOEX Defer AIPS execution; passed to AIPSEXEC
#
# Environment Variables:
# AIPSREMOTE Set to the remote shell command. If this variable
# is non-blank, it will override the definition of
# REMOTE_CMD. This allows per-user use of, for
# example, the secure shell (ssh) for starting remote
# daemons.
#
# NOTE: As of March 28, 2001 this script ONLY
# supports the secure shell. To override this (with,
# e.g. rsh, if you must, and you shouldn't), use the
# AIPSREMOTE variable.
#
# Notes: While every effort is made by this script to figure out if you
# are on a remote login link, there is *NO* portable and
# reliable way of doing this. Startup of TV or tape servers on
# remote hosts is NOT a feature that is likely to work without a
# significant amount of work on the part of the user.
#
# Also, it is ASSUMED that the REMOTE_ROOT (remote host's
# AIPS_ROOT) will be /AIPS unless the user has already set it.
# Change this default below as needed.
# The AIPS users SHOULD be starting their TV's locally first
# before initiating a remote AIPS session, and using TVOK on
# the aips startup command line.
#-----------------------------------------------------------------------
# Set the AIPS root directory.
AIPS_ROOT=/home/AIPS
# Set what it should be remotely
# CHANGE THIS if necessary.
if [ "$REMOTE_ROOT" = "" ] ; then
REMOTE_ROOT=$AIPS_ROOT
fi
# Specify command used for remote
# shell (TV startup, TPMON).
# Only use secure shell!!!
REMOTE_CMD=ssh
if [ "$AIPSREMOTE" != "" ] ; then
REMOTE_CMD=$AIPSREMOTE
case $REMOTE_CMD in
*ssh*) ;;
*) echo "WARNING: overriding the remote shell command 'ssh'"
echo " with $REMOTE_CMD."
echo " This may raise security concerns." ;;
esac
fi
case $SITE in
NRAO*|*OARN) umask 002;; # NRAO policy
* ) ;; # other sites set your own policy here
esac
# Only change these if you know
# what you're doing...
USEUNIXSOCK=NO
NEWUNIXSOCK=NO
#
# --------------- do not change anything below this line ---------------
#
export AIPS_ROOT REMOTE_ROOT USEUNIXSOCK NEWUNIXSOCK UNIXTVN
# Shortcuts for output text.
ei1 () {
echo "START_AIPS: $*"
}
# Posix: echo behaves differently
# Following trick from Martin
# Shepherd (mcs at astro.caltech.edu)
# and Will Deich.
ni1 () {
if [ "`echo -n YES`" = "YES" ] ; then
echo -n "START_AIPS: $*"
else
echo "START_AIPS: $*\c"
fi
}
spc() {
echo " "
}
if [ ! -d $AIPS_ROOT ] ; then
ei1 "AIPS_ROOT is not a directory; cannot start AIPS."
exit 2
fi
# Who am I?
. $AIPS_ROOT/HOSTS.SH
#
if [ "$ARCH" = UNKNOWN -o "$ARCH" = "" ] ; then
ei1 "$HOST is not defined in HOSTS.LIST; cannot start AIPS."
exit 2
fi
if grep "^+ $HOST" $AIPS_ROOT/HOSTS.LIST >/dev/null 2>/dev/null ; then
: proceed
else
ei1 "$HOST is not a valid AIPS host and cannot run AIPS."
exit 1
fi
# BROWZ and aipsXtra, add-ons to
# AIPS from Chris Flatters
aipsXtra="$AIPS_ROOT/bin/aipsXtra-setup"
if [ -f $aipsXtra ] ; then
. $aipsXtra
fi
# Initial selection is no TV.
TVOPT=""; export TVOPT
TPOPT=""; export TPOPT
OPTIONS=""; export OPTIONS
TVOK=""
TPOK=""
LPOPT=0
REMOTE=""
UNIXTVN=0
for option in $* ; do
opt=`echo $option | tr '[A-Z]' '[a-z]'`
arg=`echo $option | sed -e 's/^...//'`
# Which version of AIPS to run.
case $opt in
old) VERSION=OLD; export VERSION;;
new) VERSION=NEW; export VERSION;;
tst|test) VERSION=TST; export VERSION;;
# CVX became TST in 15APR98...
cvx) VERSION=CVX; export VERSION;;
# No tv wanted, or already ok
notv) TVOPT=NONE;;
tvok) TVOK="YES";;
# Data areas.
da=*) DAOPT=$arg; export DAOPT;;
# TV host and/or display.
tv=*)
case $arg in
local) USEUNIXSOCK=YES;;
local:*)
USEUNIXSOCK=YES
arg2=`echo $arg | awk -F: '{print $2}' | tr '[a-z]' '[A-Z]'`
[ "$DEBUG" = "YES" ] && ei1 "TV=local:$arg2 found"
case $arg2 in
0) NEWUNIXSOCK=YES;;
[1-9A-Z])
case $arg2 in
[1-9A-Z]) UNIXTVN=$arg2
[ "$DEBUG" = "YES" ] && ei1 "UNIXTVN=$arg2";;
esac;;
*) ;;
esac;;
*) TVOPT=$arg;;
esac
;;
# Printer selection.
pr=*) LPOPT=$arg; export LPOPT;;
# Tape server selection or none
tp=*) TPOPT=$arg;;
tpok) TPOK="YES";;
# Disable GNU readline library
norl) READLINE=NO; export READLINE;;
# Options to be passed to AIPSEXEC.
# Defer AIPS execution
noex) OPTIONS="$OPTIONS NOEX"; export OPTIONS;;
# Remote TEK screen
remote|rem|tek) OPTIONS="$OPTIONS REMOTE"; TVOPT=NONE; REMOTE=YES;;
usock|us) USEUNIXSOCK=YES
ei1 "Please use TV=LOCAL instead of USOCK";;
unew|un) NEWUNIXSOCK=YES
ei1 "Please use TV=LOCAL:0 instead of UNEW";;
*) OPTIONS="$OPTIONS $option"; export OPTIONS;;
esac
done
# Default version of AIPS to run.
# 15JAN95 and later releases need
# to have TVDEVS.KLUDGE copied to
# $AIPS_ROOT/TVDEVS.SH if they are
# to co-exist with older versions.
[ "$VERSION" = "" ] && VERSION=TST
export VERSION
# Define AIPS user environment.
. $AIPS_ROOT/AIPSPATH.SH
. $AIPS_ROOT/AIPSASSN.SH
# TV socket choices
if [ $USEUNIXSOCK = YES ] ; then
if [ $NEWUNIXSOCK = YES ] ; then
ei1 "Will start a new Unix Socket based TV"
else
if [ "$UNIXTVN" != "0" ] ; then
utn=`REHEX $UNIXTVN`
ei1 "Will use Unix Socket based TV number $utn"
else
ei1 "Will use or start first available Unix Socket based TV"
fi
fi
else
if [ $NEWUNIXSOCK = YES ] ; then
USEUNIXSOCK=YES
ei1 "Will start a new Unix Socket based TV"
else
NEWUNIXSOCK=NO
fi
fi
if [ $USEUNIXSOCK = YES ] ; then
if [ "$DISPLAY" = "" ] ; then
ei1 "You must have DISPLAY defined to use local TV's"
exit 1
else
hname=`$AIPS_ROOT/SETNAME`
TVOPT="`echo $DISPLAY | awk -F: '{print $1}'`:$hname"
fi
fi
# See how many printers there are.
lpfile=$NET0/PRDEVS.LIST
if [ -f $lpfile ] ; then
LPDEVS=`grep '^[^# ]' $lpfile | grep -v '$PRINTER' | wc -l`
LPDEVS=`eval echo $LPDEVS`
export LPDEVS
else
# We need this file!
ei1 "Cannot proceed: $lpfile file not found!"
exit 1
fi
# Printer choice if more than one
if [ $LPDEVS -gt 1 ] ; then
n=$LPOPT
if [ $LPOPT -ge 1 -a $LPOPT -le $LPDEVS ] ; then
# Get single printer definition
: ok
elif [ $LPOPT -ne 0 ] ; then
ei1 "Sorry, there is no printer number $LPOPT (only 1 - $LPDEVS)"
n=0
fi
if [ $n -eq 0 ] ; then
spc
echo "You have a choice of $LPDEVS printers. These are:"
spc
echo " No. [ type ] Description"
echo "-------------------------------------------------------------"
grep '^[^# ]' $lpfile | awk '{
skipit=0;
for (k=4; k<=NF; k++) {
if ($k ~ /\$/) skipit=1;
}
if (skipit == 0) {
printf(" %2d. [%7s] ", NR, $2);
for (j=4; j<=NF; j++) printf "%s ", $j;
printf("\n");
}
}'
echo "-------------------------------------------------------------"
# While user is mulling over this,
# figure out the default
ndef=`grep '^[^# ]' $lpfile | awk '{if ($3 ~ /DEF/) print NR}' | \
head -n 1`
[ "$ndef" = "" ] && ndef=1
# and any BIG printer
nbig=`grep '^[^# ]' $lpfile | awk '{if ($3 ~ /BIG/) print NR}' | \
head -n 1`
if [ "$nbig" != "" ] ; then
BIGPRINT=$nbig
export BIGPRINT
# Haven't tested this in all cases
BIGTHRESH=`grep '^[^# ]' $lpfile | \
awk '{if ($3 ~ /BIG/) print $3}' | head -n 1 | \
sed -e 's/BIG=\([0-9]\{1,5\}\).*/\1/'`
fi
spc
n=0
while [ $n -eq 0 ] ; do
ni1 "Enter your choice, or the word QUIT [default is $ndef]: "
read n
[ "$n" = "" ] && n=$ndef
[ $n = "QUIT" -o $n = "quit" ] && exit
if [ "$n" -lt 1 -o "$n" -gt $LPDEVS ] ; then
ei1 "Please enter a number from 1 to $LPDEVS (or QUIT)"
spc
n=0
fi
done
fi
else
n=1
if [ "$LPOPT" != "" ] ; then
[ "$LPOPT" = 0 ] && LPOPT=1
if [ "$LPOPT" != "1" ] ; then
ei1 "Only one printer configured, cannot choose printer $LPOPT"
fi
fi
fi
LPDEV=$n
LPNAM=`grep '^[^# ]' $lpfile | awk '{if (NR == '$n') print $1}'`
PRTYPE=`grep '^[^# ]' $lpfile | awk '{if (NR == '$n') print $2}'`
LPOPT=`grep '^[^# ]' $lpfile | awk '{if (NR == '$n') print $3}'`
LPDESC=`grep '^[^# ]' $lpfile | awk '{if (NR == '$n') for (j=4; j<=NF; j++) printf "%s ", $j;}'`
export LPDEV LPNAM PRTYPE LPOPT LPDESC
ei1 "Your initial AIPS printer is the $LPDESC"
ei1 " - system name $LPNAM, AIPS type $PRTYPE"
# Allocate data disks.
spc
ei1 "User data area assignments:"
# If have perl, do it the fast way
pid=$$
if [ "$AIPSTMP" = "" ] ; then
tmpfil=/tmp/DADEVS.$pid
else
tmpfil=$AIPSTMP/DADEVS.$pid
fi
[ "$HAVE_PERL" != "" ] && $SYSUNIX/DADEVS.PL $$
if [ -f $tmpfil ] ; then
. $tmpfil
rm -f $tmpfil
else
# If not or if it broke, fall back
. $SYSUNIX/DADEVS.SH
fi
if [ "$NVOL" = "0" -o "$DA01" = "" ] ; then
ei1 "Cannot start AIPS because there are no defined data areas!"
ei1 "(check DADEVS.LIST or .dadevs files, or AIPSASSN.\*)"
exit 1
fi
# Define Tape drives
. $SYSUNIX/TPDEVS.SH
# Use default TV display? Check
# for blank or :* in command line.
case $TVOPT in "" | :*)
# Are we sitting in front of a
# workstation?
[ "$TERM" = "" ] && TERM=unknown
case $TERM in
sun*|*xterm*|*hpterm|dtterm|iris*|Eterm|screen)
# Is this a slogin from a display
# workstation? First check if
# DISPLAY is set.
# Secure shell may be forwarding X
# If so, do this
if [ "$DISPLAY" != "" ] ; then
if [ "$SSH_CLIENT" != "" ] ; then
# Get the IP address
case $ARCH in
SOL | SUL)
WORKST=`echo $SSH_CLIENT | awk '{print $1}'`
;;
*)
WORKST=`echo ${SSH_CLIENT##*:} | awk '{print $1}'`
;;
esac
# Now convert to hostname if poss.
# (nslookup replaced by host cmd!)
# Yes, this is a hack.
PATH=$PATH:/usr/sbin
case $ARCH in
*LINUX|*BSD*|MAC*)
WORKST=`host $WORKST | awk '{print $NF}' | sed -e 's/\.$//'`;;
*) WORKST=`nslookup $WORKST | grep '^Name:' | awk '{print $2}'`;;
esac
# Finally, get simple hostname
WORKST=`echo $WORKST | awk -F. '{print $1}'`
# If SSH_CONNECTION not CLIENT
elif [ "$SSH_CONNECTION" != "" ] ; then
# Get the IP address
case $ARCH in
SOL | SUL)
WORKST=`echo $SSH_CONNECTION | awk '{print $1}'` ;;
*)
WORKST=`echo ${SSH_CONNECTION##*:} | awk '{print $1}'` ;;
esac
# Now convert to hostname if poss.
# (nslookup replaced by host cmd!)
# Yes, this is a hack.
PATH=$PATH:/usr/sbin
case $ARCH in
*LINUX|*BSD*|MAC*)
WORKST=`host $WORKST | awk '{print $NF}' | sed -e 's/\.$//'`;;
*) WORKST=`nslookup $WORKST | grep '^Name:' | awk '{print $2}'`;;
esac
# Finally, get simple hostname
WORKST=`echo $WORKST | awk -F. '{print $1}'`
# display, no ssh apparently
else
WORKST=`echo $DISPLAY | awk -F: '{print $1}'`
# Tackle <blank>:* and unix:*...
[ "$WORKST" = "unix" -o "$WORKST" = "" ] && \
WORKST=`$AIPS_ROOT/SETNAME`
fi
# DISPLAY not set. Sigh... See if
# we can find where user came from
# This method WILL fail often. On
# AIX 3.1 and Solaris 2.3, utmp is
# not properly cleared out and
# hence the "head -n 1".
else
cmd="who am i"
# HP's do it differently.
[ "$ARCH" = "HP" ] && cmd="who -R am i"
[ "$ARCH" = "HP2" ] && cmd="who -R am i"
# Get the remote host field if any
WORKST=`$cmd | head -n 1 | awk -F\( '{print $2}' | sed -e 's/)//'`
# If none, use simple hostname
[ "$WORKST" = "" ] && WORKST=`$AIPS_ROOT/SETNAME`
# Tackle as many possibilities as
# possible.
case $WORKST in
:* | unix:*) WORKST=`$AIPS_ROOT/SETNAME` ;;
*:*) WORKST=`echo $WORKST | awk -F: '{print $1}'` ;;
[0-9]*.[0-9]*) ;;
*.*) WORKST=`echo $WORKST | awk -F. '{print $1}'` ;;
esac
# This should NEVER happen, but...
[ "$WORKST" = "${USER-$LOGNAME}" ] && \
WORKST=`$AIPS_ROOT/SETNAME`
fi
ei1 "I am GUESSING you are at a workstation called $WORKST"
if [ $USEUNIXSOCK = YES ] ; then
ei1 " - but have chosen to run the TV locally on $HOST"
else
TVOPT=$WORKST$TVOPT
fi
;;
*)
# Reserved terminals (rarely used)
ttynam="`tty 2>/dev/null`"
if [ "$ttynam" = "$RESSTT1" ] ; then
ei1 "You are at reserved terminal 1."
TVOPT=$TVTT1
elif [ "$ttynam" = "$RESSTT2" ] ; then
ei1 "You are at reserved terminal 2."
TVOPT=$TVTT2
elif [ "$ttynam" = "$RESSTT3" ] ; then
ei1 "You are at reserved terminal 3."
TVOPT=$TVTT3
else
# Disable image display.
TVOPT=NONE
ei1 "You do not seem to be at a workstation (TERM=$TERM)"
fi
;;
esac
export TVOPT
;;
esac
# Start AIPS TV Servers (if any).
[ "$DEBUG" = "YES" ] && ei1 "Using $AIPS_ROOT/TVDEVS.SH"
. $AIPS_ROOT/TVDEVS.SH
if [ "$TVOPT" != NONE ] ; then
# Determine TV servers to use.
case $TVALT in
# Don't do it on hardwired TV's.
TVALT?4) ;;
*)
if [ "$TVOK" = "YES" ] ; then
ei1 "Assuming TV servers are already started (you said TVOK)"
else
if [ "$TVHOST" = "`$AIPS_ROOT/SETNAME`" ] ; then
ei1 "Starting TV servers on $TVHOST asynchronously"
if [ "$USEUNIXSOCK" = YES ] ; then
if [ "$NEWUNIXSOCK" = YES ] ; then
ei1 " - WITH Unix Sockets (new instance) as requested..."
else
ei1 " - WITH Unix Sockets as requested..."
fi
$AIPS_ROOT/START_TVSERVERS $TVOPT $VERSION UNIX &
else
ei1 " - with Internet Sockets..."
$AIPS_ROOT/START_TVSERVERS $TVOPT $VERSION INET &
fi
elif [ "$TVHOST" != NONE ] ; then
# Do it on the remote host.
# Need .rhosts setup to do this.
ei1 "Checking if $TVHOST is reachable via $REMOTE_CMD..."
if $REMOTE_CMD $TVHOST echo "Checking" >/dev/null 2>/dev/null
then
ei1 "Yes it is. Telling $TVHOST to start VERSION=$VERSION"
ei1 "TV servers asynchronously with INET Socket..."
ei1 "******************************************************"
ei1 "IF THIS FAILS, start AIPS yourself by hand on $TVHOST."
ei1 "******************************************************"
$REMOTE_CMD $TVHOST -n \
$REMOTE_ROOT/START_TVSERVERS $TVOPT $VERSION INET &
else
ei1 "Cannot start remote TV servers on $TVHOST, sorry!"
ei1 "remote command gave this error:"
$REMOTE_CMD $TVHOST echo "This won't work"
case $REMOTE_CMD in
*ssh*)
ei1 "check your secure shell setup, in particular"
ei1 "whether you have a passphrase enabled. You may"
ei1 "wish to try '$REMOTE_CMD -v $TVHOST pwd' to see"
ei1 "what the problem is."
;;
*)
ei1 "You may want to consider using the secure shell"
ei1 "for remote startup of AIPS TVs. If you cannot,"
ei1 "start an AIPS session on $TVHOST first, then come"
ei1 "back here and say 'aips tv=$TVHOST tvok'"
;;
esac
fi
fi
fi
;;
esac
fi
if [ "$TVOPT" = NONE ] ; then
ei1 "No TV selected; operating in dumb terminal mode."
fi
# Start local tape servers.
if [ "$TPOK" = "YES" ] ; then
ei1 "Assuming TPMON daemons are running or not used (you said TPOK)"
else
ei1 "Starting TPMON daemons on $HOST asynchronously..."
$AIPS_ROOT/START_TPSERVERS &
fi
# Start AIPS tape servers.
if [ "$TPOPT" != "" ] ; then
# Convert to lowercase, and strip
# non-alphanumerics.
TPOPT=`echo $TPOPT | tr '[A-Z]' '[a-z]' | sed -e 's/[^a-z0-9]/ /g'`
for TPHOST in $TPOPT ; do
ei1 "Checking if I can reach tape host $TPHOST via $REMOTE_CMD..."
if $REMOTE_CMD $TPHOST echo "Checking" >/dev/null 2>/dev/null ; then
ei1 "Yes I can. Telling $TPHOST to start TPMON servers..."
ei1 "(This will allow you to use tape drives on $TPHOST)"
ei1 "******************************************************"
ei1 "IF THIS FAILS, start AIPS yourself by hand on $TVHOST."
ei1 "******************************************************"
$REMOTE_CMD $TPHOST -n $REMOTE_ROOT/START_TPSERVERS &
else
ei1 "Cannot start remote tape servers on $TPHOST, sorry!"
ei1 "remote command gave this error:"
$REMOTE_CMD $TPHOST echo "This won't work"
case $REMOTE_CMD in
*ssh*)
ei1 "check your secure shell setup, in particular"
ei1 "whether you have a passphrase enabled. You may"
ei1 "wish to try '$REMOTE_CMD -v $TPHOST pwd' to see"
ei1 "what the problem is."
;;
*)
ei1 "You may want to consider using the secure shell"
ei1 "for remote startup of TPMON daemons. If you cannot,"
ei1 "start an AIPS session on $TPHOST first, then come"
ei1 "back here and use the 'tpok' option in your startup."
ei1 "(see 'man aips' or HELP AIPS for more details)"
;;
esac
fi
done
fi
# Environment variables for X11
# programs started within AIPS
if [ -z "$XBMLANGPATH" ] ; then
XBMLANGPATH=$AIPS_ROOT/bitmaps/%B
else
XMBLANGPATH=$AIPS_ROOT/bitmaps/%B:$XBMLANGPATH
fi
if [ -z "$XFILESEARCHPATH" ] ; then
XFILESEARCHPATH=$AIPS_ROOT/%T/%N
else
XFILESEARCHPATH=$XFILESEARCHPATH:$AIPS_ROOT/%T/%N
fi
export XBMLANGPATH
export XFILESEARCHPATH
# Finally, start AIPS.
exec AIPSEXEC $OPTIONS
More information about the Daip
mailing list