diff options
Diffstat (limited to 'mantools/enter')
-rwxr-xr-x | mantools/enter | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/mantools/enter b/mantools/enter new file mode 100755 index 0000000..4287c1a --- /dev/null +++ b/mantools/enter @@ -0,0 +1,145 @@ +#!/bin/sh + +# enter - set up project-specific environment + +# @(#) enter.sh 1.5 11/4/89 15:56:03 + +# initialize + +IFS=" +" + +: ${HOME?} ${SHELL=/bin/sh} make sure these are set + +# sanity checks... + +test $# = 1 || { + echo "Usage: ${0} project" 1>&2; exit 1 +} + +test -r ${HOME}/.${1} || { + echo "${0}: can't read environment file: '${HOME}/.${1}'" 1>&2; exit 1 +} + +test -x ${SHELL} || { + echo "${0}: can't execute command shell: '${SHELL}'" 1>&2; exit 1 +} + +# set up default Bourne-shell prompt + +export PS1; PS1="$1%${PS1- }" + +# load environment + +. ${HOME}/.${1} + +# define UPPER and lower-case environment variables with the project name + +_PNAME_=`echo ${1} | case \`echo -n\` in # assume $1 lower case + "") tr a-z A-Z;; # this is for V7, BSD + *) tr '[a-z]' '[A-Z]';; # and this is for SYSV + esac` +eval ${1}=\${${_PNAME_}=\${${1}}} + +eval test "X\${${1}}" != X || { + echo "${0}: ${HOME}/.${1} should set '${1}' or '${_PNAME_}'" 1>&2; exit 1 +} + +export ${1} MANPATH PATH ${_PNAME_} + +# become a new shell + +echo "Entering project '${1}' - leave with 'exit' or 'control-d'" 1>&2 + +exec ${SHELL} + +echo "project ${1} NOT entered" 1>&2; exit 1; + +#++ +# NAME +# enter 1 +# SUMMARY +# set up a project-specific environment +# PROJECT +# sdetools +# SYNOPSIS +# enter project +# exit +# DESCRIPTION +# The \fIenter\fR command sets up an environment that makes +# it easy to access \fIproject\fR-specific programs and files. +# +# \fIenter\fP consults a file with environment information +# ($HOME/.\fIproject\fR, Bourne-shell syntax) and invokes +# a new command shell of the same type as the login shell. +# Typically, project environment files are maintained and +# given out by the project administrator. +# +# In order to leave the project environment use the \fIexit\fP +# command or type a control-d; +# the details may depend on the type of login shell involved. +# +# As a minimum, the environment file should set an environment +# variable with the same name as the \fIproject\fP. The variable +# name can be either be identical to \fIproject\fP or in upper case. +# For consistency, \fIenter\fP will set both variables to the same value. +# EXAMPLE +# .fi +# .ad +# In this example, +# all files pertaining to a project \fIfoobar\fR are located under the +# directory \fI/usr/foo/bar/foobar\fR. For example, there +# are subdirectories +# \fI/usr/foo/bar/foobar/man\fR with manual pages, +# \fI/usr/foo/bar/foobar/bin\fR with executable +# programs, other directories for object libraries and include files, +# and so on. +# +# In order to enter a project \fIfoobar\fR, the command +# .PP +# .ti +5 +# .ft C +# enter foobar +# .ft +# .PP +# consults a file \fI.foobar\fR (in the user\'s home directory) +# with contents: +# .PP +# .ft C +# .nf +# .in +5 +# export FOOBAR; FOOBAR=/usr/foo/bar/foobar +# export PATH; PATH=$PATH:$FOOBAR/bin +# export MANPATH; MANPATH=$MANPATH:$FOOBAR/man +# .ft +# .fi +# .PP +# The second line automatically makes all project-specific +# executable programs accessible. The third line makes it possible +# to use the standard UNIX \fIman\fR command for retrieval of +# project-specific manual pages. The \fIenter\fR command +# makes sure that both the \fIfoobar\fR and \fIFOOBAR\fR +# environment variables are set to the same value. +# COMMANDS +# sh(1), echo(1), test(1), tr(1), login shell +# FILES +# $HOME/.\fIproject\fR +# ENVIRONMENT VARIABLES +# SHELL, login shell +# HOME, login directory +# PATH, search path for commands +# MANPATH, search path for the \fIman\fR command. +# BUGS +# Name clashes may occur if people have entered several projects +# at the same time. This can be avoided by using unique project names, +# which is a good idea anyway. +# AUTHOR(S) +# W.Z. Venema +# Eindhoven University of Technology +# Department of Mathematics and Computer Science +# Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands +# CREATION DATE +# Tue Apr 19 15:35:41 MET DST 1988 +# STATUS +# enter.sh 1.5 11/4/89 15:56:03 (draft) +#-- |