1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 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)
#--
|