Enhanced UNIX Compatibility Mode

Single-rooted virtual file system for MKS Toolkit 

Miscellaneous Information


DESCRIPTION

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.

Note:

There are two forms of Windows path names: the long form and the short form. The virtual file system uses the long form.

Turning EUCM On and Off

To turn EUCM and the virtual file system on, set the TK_UNIX_FILESYSTEM environment variable to a non-zero value. For example:

export TK_UNIX_FILESYSTEM=1

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

Specially Mapped Directories

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.

Note:

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.

Referring_to_Drives

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:

c:/dir1/dir2/file1
D:/dir/file2

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:

/c=/dir1/dir2/file1
/D=/dir/file2

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:

/mnt/c/dir1/dir2/file1
/mnt/d/dir/file

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.

Changing the Mount Directory

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:

export TK_UNIX_FILESYSTEM_MNT="/cygdrive"

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:

mkdir $ROOTDIR$TK_UNIX_FILESYSTEM_MNT

EUCM and MKS Toolkit Utilities

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.

Environment Variables and Paths

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

Note:

The ROOTDIR environment is not affected by the TK_PATH_CONVERT environment. It is always stored and displayed as a Windows path name.

In addition, using the -P of MKS KornShell's typeset, declare, or local command, you can assign the ability for the value to be interpreted in this manner to any shell variable.


ENVIRONMENT VARIABLES

TK_PATH_CONVERT 

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.

TK_UNIX_FILESYSTEM 

When this variable is set, the Enhanced UNIX Compatibility Mode is on and the virtual file system is in use.

TK_UNIX_FILESYSTEM_MNT 

Specifies the name of the directory to "contain" the mounted drives included in the virtual file system.


PORTABILITY

Windows 7. Windows Server 2008 R2. Windows 8. Windows Server 2012. Windows 10. Windows Server 2016.


AVAILABILITY

PTC MKS Toolkit for System Administrators
PTC MKS Toolkit for Developers
PTC MKS Toolkit for Interoperability
PTC MKS Toolkit for Professional Developers
PTC MKS Toolkit for Professional Developers 64-Bit Edition
PTC MKS Toolkit for Enterprise Developers
PTC MKS Toolkit for Enterprise Developers 64-Bit Edition
PTC Integrity


PTC MKS Toolkit 10.1 Documentation Build 15.