Content-type: text/html Cygwin Utilities

Cygwin Utilities

Section: Cygwin
This page is an edited version of http://cygwin.com/cygwin-ug-net/using-utils.html
Return to Main Contents
Cygwin comes with a number of command-line utilities that are used to manage the UNIX emulation portion of the Cygwin environment. While many of these reflect their UNIX counterparts, each was written specifically for Cygwin.

mount

Usage mount
      mount [-bfs] <win32path> <posixpath>
      mount [-bs] --change-cygdrive-prefix<posixpath>
      mount --import-old-mounts

  -b = text files are equivalent to binary files (newline = \n)
  -x = files in the mounted directory are automatically given execute permission.
  -f = force mount, don't warn about missing mount point directories
  -s = add mount point to system-wide registry location
  --change-automount-prefix = change path prefix used for automatic mount points
  --import-old-mounts = copy old registry mount table mounts into the current mount areas

  When invoked without any arguments, mount displays the current mount table.

The mount program is used to map your drives and shares onto Cygwin's simulated POSIX directory tree, much like as is done by mount commands on typical UNIX systems. Please see the section called The Cygwin Mount Table for more information on the concepts behind the Cygwin POSIX file system and strategies for using mounts.

Using mount

If you just type mount with no parameters, it will display the current mount table for you.

Example 3-9. Displaying the current set of mount points

c:\cygnus\> mount
Device           Directory           Type        Flags
D:               /d                  user        textmode
C:               /                   system      textmode

In this example, the C drive is the POSIX root and D drive is mapped to /d. Note that in this case, the root mount is a system-wide mount point that is visible to all users running Cygwin programs, whereas the /d mount is only visible to the current user.

The mount utility is also the mechanism for adding new mounts to the mount table. The following example demonstrates how to mount the directory C:\cygnus\cygwin-b20\H-i586-cygwin32\bin to /bin and the network directory \\pollux\home\joe\data to /data. /bin is assumed to already exist.

Example 3-10. Adding mount points

c:\cygnus\> ls /bin /data
ls: /data: No such file or directory
c:\cygnus\> mount C:\cygnus\cygwin-b20\H-i586-cygwin32\bin /bin
c:\cygnus\> mount \\pollux\home\joe\data /data
Warning: /data does not exist!
c:\cygnus\> mount
Device           Directory           Type        Flags
\\pollux\home\joe\data   /data       user        textmode
C:\cygnus\cygwin-b20\H-i586-cygwin32\bin   /bin   user   textmode
D:               /d                  user        textmode
\\.\tape1:       /dev/st1            user        textmode
\\.\tape0:       /dev/st0            user        textmode
\\.\b:           /dev/fd1            user        textmode
\\.\a:           /dev/fd0            user        textmode
C:               /                   system      textmode
c:\cygnus\> ls /bin/sh
/bin/sh

Note that mount was invoked from the Windows command shell in the previous example. In many Unix shells, including bash, it is legal and convenient to use the forward "/" in Win32 pathnames since the "\" is the shell's escape character.

The "-s" flag to mount is used to add a mount in the system-wide mount table used by all Cygwin users on the system, instead of the user-specific one. System-wide mounts are displayed by mount as being of the "system" type, as is the case for the / partition in the last example. Under Windows NT, only those users with Administrator priviledges are permitted to modify the system-wide mount table.

Note that a given POSIX path may only exist once in the user table and once in the global, system-wide table. Attempts to replace the mount will fail with a busy error. The "-f" (force) flag causes the old mount to be silently replaced with the new one. It will also silence warnings about the non-existence of directories at the Win32 path location.

The "-b" flag is used to instruct Cygwin to treat binary and text files in the same manner by default. Binary mode mounts are marked as "binmode" in the Flags column of mount output. By default, mounts are in text mode ("textmode" in the Flags column).

The "-x" flag is used to instruct Cygwin that the mounted file is "executable". If the "-x" flag is used with a directory then all files in the directory are executable. Files ending in certain extensions (.exe, .com, .bat, .cmd) are assumed to be executable by default. Files whose first two characters begin with '#!' are also considered to be executable. This option allows other files to be marked as executable and avoids the overhead of opening each file to check for a '#!'.

Cygdrive mount points

Whenever Cygwin cannot use any of the existing mounts to convert from a particular Win32 path to a POSIX one, Cygwin will, instead, convert to a POSIX path using a default mount point: /cygdrive. For example, if Cygwin accesses Z:\foo and the Z drive is not currently in the mount table, then Z:\ will be accessible as /cygdrive/Z. The default prefix of /cygdrive may be changed via the mount command.

The mount utility can be used to change this default automount prefix through the use of the "--change-cygdrive-prefix" flag. In the following example, we will set the automount prefix to /:

Example 3-11. Changing the default prefix

c:\cygnus\> mount --change-cygdrive-prefix /

Note that you if you set a new prefix in this manner, you can specify the "-s" flag to make this the system-wide default prefix. By default, the cygdrive-prefix applies only to the current user. In the same way, you can specify the "-b" flag such that all new automounted filesystems default to binary mode file accesses.

Limitations

Limitations: there is a hard-coded limit of 30 mount points. Also, although you can mount to pathnames that do not start with "/", there is no way to make use of such mount points.

Normally the POSIX mount point in Cygwin is an existing empty directory, as in standard UNIX. If this is the case, or if there is a place-holder for the mount point (such as a file, a symbolic link pointing anywhere, or a non-empty directory), you will get the expected behavior. Files present in a mount point directory before the mount become invisible to Cygwin programs.

It is sometimes desirable to mount to a non-existent directory, for example to avoid cluttering the root directory with names such as a, b, c pointing to disks. Although mount will give you a warning, most everything will work properly when you refer to the mount point explicitly. Some strange effects can occur however. For example if your current working directory is /dir, say, and /dir/mtpt is a mount point, then mtpt will not show up in an ls or echo * command and find . will not find mtpt.


This document was created using http://cygwin.com/cygwin-ug-net/using-utils.html
Return to Main Contents