This is the info file for inclusion with the VMS port of TCSH. ---- System Requirements: o VAX running VMS version V5.5 or above. o VMS/Posix installed and configured with a container file system. (^ comes free with the operating system) o An /etc/termcap file that contains entries for vtxxx_series o A friendly system manager. o About an hour. (VS 4000/60) ---- Installation: 1. untar the file. 2. copy the config.vms file from config/ to the directory that holds the tcsh source, rename to be config.h 3. rename Makefile.vms to be Makefile 4. Type psx> make 5. Wait for an hour. a) The construction of tc.const.h will take about 20 mins on a vs4000/60 b) Read the man pages.(see note about man pages) 6) If you want to install TCSH as the default shell instead of ksh add the following line to POSIX$USER_PARAMS.DAT SHELL /usr/local/bin/tcsh You may not include flags on the command line. This line is used to create the executive mode logical name POSIX$SHELL. In creating this logical name flags are ignored, so a login shell is not possible. 7) TCSH-VMS will use the file /etc/csh.cshrc to provide the equivalent of a sys$sylogin.com, suggested contents are below. You will probably need to make this file using the SYSTEM account. ---- Notes: This is not a definition of the capabilities of VMS/Posix. Refer to `Guide to using VMS/Posix' etc... VMS/Posix is the OPEN part of OPEN/VMS. It consists of three main sections. - The POSIX Libraries, which are system interfaces adhering to the Callable Interface standards IEEE 1003.1, 1003.1a and 1003.2 and most of 1003.4 (real time). - The POSIX Commands and utilities, 1003.2 (Classic Utilities) some of the Software Development utilities. - The VMS/Posix Shell, a Korn Shell variant. TCSH has been ported to be POSIX Conformant. The one thing preventing `Strict POSIX Conformance' is the use of Termcap routines that require the presence of a /dev/termcap. Once code has been written to use the library routines tcgetattr etc, the source will be strictly POSIX conformant. TCSH has certain features missing or disabled. - UTMP facilities, this is related to most of the inter-user stuff like watchlog. - Resource limit access. - Access to passwd tag in the passwd structure. (use DCL for user admin functions) - Other items may be missing or behave in an unexpected manner. It has not been possible to test and debug all the features of TCSH on VMS as yet. ---- Features and known bugs: 1) The VMS/Posix MAN command is a drop through to DCL help. It seems to assume it will always be running from ksh. To use define the alias alias man '/bin/sh /bin/man \!*' in your /etc/csh.cshrc This fixes the problem. 2) There is a problem with the way TCSH initialises the current working directory ($cwd, environment variable PWD) Put the command cd in /etc/csh.cshrc as a workaround. For the curious; The version of getwd i use is the subroutine in TCSH rather than the getcwd from the posix library. The tcsh version xgetcwd in tc.os.c will search up the tree, by stat()'ing and opening the parent directory, to build up the CWD path. All works well until it hits the root directory. At this point it is usually looking for a file with st_ino =0 and st_dev = 0, (the default numbers assigned to the mount point of a VMS filesystem in the '/' directory.) which is the first file it comes across. This, due to the way UCX starts is /vms. eg. I am in /u1/atp/fred. xgetwd looks at '.' gets the st_ino and st_dev. goes to '..' opens it and gets the name associated with inode and dev from before. CWD now holds "fred". I now repeat the process one layer up. CWD now becomes "atp/fred". The problems now start with the stat of '.' at this point. stat() returns a st_ino and st_dev of 0. - i don't know why. When i open '..' and read it i get the first name that matches an inode of '0' and a device of '0' - which is /vms. now my CWD is set to be "/vms/atp/fred" This is a problem, as /vms/atp/fred does not exist. That is my understanding of the problem. This throws the history mechanism, terminal handling, and man pages for some reason. I worked around it by putting a 'cd' in my /etc/csh.cshrc which effectively copies the contents of $HOME into $PWD. 3) termcap problem If the value of term is not a recognised one (vt200_series, vt300_series) then shell utilities like 'more' will complain. Unless your /etc/termcap has entries for vt300_series, you will not be able to use %U %B et al, and anything else that uses the termcap entries. 4) Line editing problem Occasionally the line editing becomes corrupted. This is probably due to a conflict in the use of both termios and termcap routines. 5) TCSH expects to be installed in /usr/local/bin - you may change this in Makefile.vms or create /usr/local/bin. 6) If you have problems with reading things on the path - substitute /bin/ for /bin in pathnames.h - VMS/Posix uses symbolic links for all the top level directories. 7) If the shell complains that a command is not found check to see if there are multiple version numbers in /bin/ eg. tar..1 tar..2 . if there are, get the sysmanager to purge this directory. --------- suggested csh.cshrc --- # model csh.cshrc alias man '/bin/sh /bin/man \!*' cd set history 50 stty sane #end --- I read vmsnet.vms-posix, It is a low volume newsgroup, so i tend to read all articles, if E-mail fails to work for you get me there. I Release the work I have done in porting this to VMS/Posix into the public domain under the conditions imposed by the headers contained in the source code. I accept no Liability either express or implied for any damage or loss arising from the use or failure of this code. Have a nice day. Andy Phillips Mullard Space Science Lab. 92/10/07 Holmbury St. Mary. 19709::atp Surrey. atp@uk.ac.ucl.mssl England.