1#!/bin/sh 2 3# enter - set up project-specific environment 4 5# @(#) enter.sh 1.5 11/4/89 15:56:03 6 7# initialize 8 9IFS=" 10" 11 12: ${HOME?} ${SHELL=/bin/sh} make sure these are set 13 14# sanity checks... 15 16test $# = 1 || { 17 echo "Usage: ${0} project" 1>&2; exit 1 18} 19 20test -r ${HOME}/.${1} || { 21 echo "${0}: can't read environment file: '${HOME}/.${1}'" 1>&2; exit 1 22} 23 24test -x ${SHELL} || { 25 echo "${0}: can't execute command shell: '${SHELL}'" 1>&2; exit 1 26} 27 28# set up default Bourne-shell prompt 29 30export PS1; PS1="$1%${PS1- }" 31 32# load environment 33 34. ${HOME}/.${1} 35 36# define UPPER and lower-case environment variables with the project name 37 38_PNAME_=`echo ${1} | case \`echo -n\` in # assume $1 lower case 39 "") tr a-z A-Z;; # this is for V7, BSD 40 *) tr '[a-z]' '[A-Z]';; # and this is for SYSV 41 esac` 42eval ${1}=\${${_PNAME_}=\${${1}}} 43 44eval test "X\${${1}}" != X || { 45 echo "${0}: ${HOME}/.${1} should set '${1}' or '${_PNAME_}'" 1>&2; exit 1 46} 47 48export ${1} MANPATH PATH ${_PNAME_} 49 50# become a new shell 51 52echo "Entering project '${1}' - leave with 'exit' or 'control-d'" 1>&2 53 54exec ${SHELL} 55 56echo "project ${1} NOT entered" 1>&2; exit 1; 57 58#++ 59# NAME 60# enter 1 61# SUMMARY 62# set up a project-specific environment 63# PROJECT 64# sdetools 65# SYNOPSIS 66# enter project 67# exit 68# DESCRIPTION 69# The \fIenter\fR command sets up an environment that makes 70# it easy to access \fIproject\fR-specific programs and files. 71# 72# \fIenter\fP consults a file with environment information 73# ($HOME/.\fIproject\fR, Bourne-shell syntax) and invokes 74# a new command shell of the same type as the login shell. 75# Typically, project environment files are maintained and 76# given out by the project administrator. 77# 78# In order to leave the project environment use the \fIexit\fP 79# command or type a control-d; 80# the details may depend on the type of login shell involved. 81# 82# As a minimum, the environment file should set an environment 83# variable with the same name as the \fIproject\fP. The variable 84# name can be either be identical to \fIproject\fP or in upper case. 85# For consistency, \fIenter\fP will set both variables to the same value. 86# EXAMPLE 87# .fi 88# .ad 89# In this example, 90# all files pertaining to a project \fIfoobar\fR are located under the 91# directory \fI/usr/foo/bar/foobar\fR. For example, there 92# are subdirectories 93# \fI/usr/foo/bar/foobar/man\fR with manual pages, 94# \fI/usr/foo/bar/foobar/bin\fR with executable 95# programs, other directories for object libraries and include files, 96# and so on. 97# 98# In order to enter a project \fIfoobar\fR, the command 99# .PP 100# .ti +5 101# .ft C 102# enter foobar 103# .ft 104# .PP 105# consults a file \fI.foobar\fR (in the user\'s home directory) 106# with contents: 107# .PP 108# .ft C 109# .nf 110# .in +5 111# export FOOBAR; FOOBAR=/usr/foo/bar/foobar 112# export PATH; PATH=$PATH:$FOOBAR/bin 113# export MANPATH; MANPATH=$MANPATH:$FOOBAR/man 114# .ft 115# .fi 116# .PP 117# The second line automatically makes all project-specific 118# executable programs accessible. The third line makes it possible 119# to use the standard UNIX \fIman\fR command for retrieval of 120# project-specific manual pages. The \fIenter\fR command 121# makes sure that both the \fIfoobar\fR and \fIFOOBAR\fR 122# environment variables are set to the same value. 123# COMMANDS 124# sh(1), echo(1), test(1), tr(1), login shell 125# FILES 126# $HOME/.\fIproject\fR 127# ENVIRONMENT VARIABLES 128# SHELL, login shell 129# HOME, login directory 130# PATH, search path for commands 131# MANPATH, search path for the \fIman\fR command. 132# BUGS 133# Name clashes may occur if people have entered several projects 134# at the same time. This can be avoided by using unique project names, 135# which is a good idea anyway. 136# AUTHOR(S) 137# W.Z. Venema 138# Eindhoven University of Technology 139# Department of Mathematics and Computer Science 140# Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands 141# CREATION DATE 142# Tue Apr 19 15:35:41 MET DST 1988 143# STATUS 144# enter.sh 1.5 11/4/89 15:56:03 (draft) 145#-- 146