The Enhanced UNIX Compatibility Mode (EUCM) provides MKS Toolkit users with a virtual file system that emulates the single-rooted file systems found on UNIX and Linux systems. Using this virtual file system lets you run many scripts written for UNIX or Linux with MKS Toolkit without needing to change any path names.
There are two forms of Windows path names: the long form and the short form. The virtual file system uses the long form.
To turn EUCM and the virtual file system on, set the TK_UNIX_FILESYSTEM environment variable to a non-zero value. For example:
To turn EUCM and the virtual file system off, either set the TK_UNIX_FILESYSTEM environment variable to zero or use unset to unset the variable. For example:
export TK_UNIX_FILESYSTEM=0 unset TK_UNIX_FILESYSTEM
When EUCM is on, the virtual file system maps a number of directories commonly used on UNIX systems to standard MKS Toolkit directories on the native file system. With the virtual file system, a reference to one of these specially mapped directories is actually a reference to the corresponding MKS Toolkit directory.
The following table shows these virtual file system directories and their native file system equivalents.
Virtual File System Native File System / $ROOTDIR/ /etc/ $ROOTDIR/etc/ /home/ $HOME/../ /tmp/ $TMPDIR/ /usr/tmp/ $TMPDIR/ /usr/man/ $ROOTDIR/etc/ /usr/bin/ $ROOTDIR/mksnt/
You can view non-existent virtual directories (such as /mnt and /usr) with utilities like ls and lc, but you cannot move to those directory with cd unless there is a corresponding real directory. That is, for cd /mnt to work, $ROOTDIR/mnt must exist.
When $ROOTDIR/mnt exists and contains a file that would have the same name as a mounted drive (for example, $ROOTDIR/mnt/c) and EUCM is on, then /mnt/c will refer to the drive name rather than the file. The file can be referred to by using its full absolute path name.
When EUCM is on, there are three ways to refer to drives in virtual file system path names.
The first is to specify a full Windows path name. For example:
The second method is similar to the first except that it uses the /x=/ syntax instead of the x:/ syntax (where x is the drive letter. For example:
The final method is the UNIX method. This is the recommended way to refer to drives because it best reflects the way the virtual file system views your drives (both local and networked). Essentially, the virtual file system treats all drives as mounted devices under the /mnt directory. Your a: drive is "mounted" as /mnt/a, your b: drive as /mnt/b, and so on. For example:
The ls /mnt and lc /mnt commands will list the drives currently attached to the system. This could take a noticeable amout of time depending on the number of network drives attached and the speed of your network connection.
Because the virtual file system treats all drives as part of a single file system, using a command like find or du on the / or mnt directories, the command will be performed on all drives, both local and networked.
The TK_UNIX_FILESYSTEM_MNT environment variable contains the name of the directory under which other drives will be mounted in the virtual file system. By default, this is set to /mnt, such that your C: drive is mounted as /mnt/c, your D: drive as /mnt/char/, and so on.
You can specify a different location for drives to be mounted by changing the value of TK_UNIX_FILESYTEM_MNT. For example:
would result in your C: drive being mounted as cygdrive/c, D: as cygdrive/d, and so on.
This can provide compatibility with other virtual file systems that take a similar approach.
When you change the setting of the TK_UNIX_FILESYSTEM_MNT environment variable, you should also create a directory with that name under $ROOTDIR to ensure that certain utilities such as cd can work with the directory properly. You can do that with the command:
The effects of EUCM and the virtual file system on individual MKS Toolkit utilities are usually noted in the reference pages for those utilities, usually in the description of TK_UNIX_FILESYSTEM in the ENVIRONMENT VARIABLES section.
There are, however, some MKS Toolkit utilities that are not affected at all by EUCM (regardless of how TK_UNIX_FILESYSTEM and TK_PATH_CONVERT are set) and do not use the virtual file system. Included in these utilities are those that use Win32-specific features and may require Win32-style path names on the command line, output Win32-style path names, or use Win32-style path names in their dialogs. For example, vdiff32 and vpax are GUI-based utilities that do not support EUCM.
In addition, EUCM is not currently implemented on the NuTCRACKER Platform. This means that utilities (such as perl) that use the NuTCRACKER Platform are not affected by EUCM and cannot use virtual file system path names. This includes utilities like htsplit which is actually a perl script and as such is not affected by EUCM.
Many MKS Toolkit environment variables (especially ones based on UNIX variables) contain a path name or a list of path names. Internally, these variables are stored in Windows format; however, depending on the setting of the TK_PATH_CONVERT and whether or not EUCM is on, their values are displayed in either Windows or UNIX format.
In Windows format, drives are specified by x: (where x is the drive letter) and ; is used to separate directories. If, when defining one of these variables, a drive specifier in the form /x=/ is used, it is converted to x:/. Also, if : appears in the variable definition and it is obvious from the context that it is not part of a drive specifier but rather a directory separator, it is converted to ;.
When EUCM is on, these environment variables are always displayed using virtual file system path names with : as the directory separator. The TK_PATH_CONVERT environment variable has no effect.
When EUCM is off and TK_PATH_CONVERT is set to UNIX (this value is case-insensitive), these variables are displayed as follows:
When EUCM is off and TK_PATH_CONVERT is not set to UNIX, these variables are displayed in Windows format.
The following environment variables are considered to contain paths:
BASH BASH_ENV CDPATH COMSPEC DICTFILE DIFFPATH EDITOR ENV ENVIRON FCEDIT FPATH HELP HELPCMD HISTEDIT HISTFILE HOME MAGIC MAIL MAILER MAILPATH MAN_CHM_INDEX MAN_HTM_PATHS MAN_TXT_INDEX MANPAGER MANPATH NLSPATH OLDPWD PAGER PATH Path PWD RANDFILE SCHEDULER_LOGFILE SCMSCRIPT SHELL shell TEMP TERMCAP TERMINFO TMP TMPDIR VISUAL
In addition, the following csh variables are considered to contain paths:
cdpath cwd histfile home mail path shell
The ROOTDIR environment is not affected by the TK_PATH_CONVERT environment. It is always stored and displayed as a Windows path name.
Determines whether or environment variables that are considered to contain path names are displayed in Windows or UNIX format. When this variable is set to UNIX (this value is case-insensitive), such an environment variable is displayed in UNIX format; otherwise, it is displayed in Windows format. See the Environment Variables and Paths section for more information.
When this variable is set, the Enhanced UNIX Compatibility Mode is on and the virtual file system is in use.
Specifies the name of the directory to "contain" the mounted drives included in the virtual file system.
Windows 2000. Windows XP. Windows Server 2003. Windows Vista. Windows 7. Windows Server 2008. Windows 8. Windows Server 2012.
MKS Toolkit for System Administrators
MKS Toolkit for Developers
MKS Toolkit for Interoperability
MKS Toolkit for Professional Developers
MKS Toolkit for Enterprise Developers
MKS Toolkit for Enterprise Developers 64-Bit Edition
MKS Toolkit 9.5 Documentation Build 3.