Wednesday, January 22, 2014

Cygwin - Using alternate home root

Often, you wish to use an alternate home root in your Cygwin environment. In Cygwin Webpage, it provides the following in Example 3.11

mkpasswd -l -p "$(cygpath -H)" > /etc/passwd

While

-l means print local user account

-p "$(cygpath -H)" means set specific home path with cygpath command. cygpath convert Unix and Windows format path to Cygwin path (ie, /cygdrive/c/). cygpath -H means output current Home root for the current user.

To include domain users in the output, add -d switch

mkpasswd -d -l -p "$(cygpath -H)" > /etc/passwd

See http://cygwin.com/cygwin-ug-net/using-utils.html

However, this method makes an assumption that you have write access to /etc/passwd. Normally, your system administrator does not give you write access to this file. In addition, the above command overwrite /etc/passwd which could be dangerous.

An alternative solution is to create a HOME user environmental variable in Windows.

When Cygwin start up, it checks for a HOME environmental variable in the system. If the variable is found, Cygwin will set user home path to the HOME environmental variable, else, it will default to system home root. This solution can be done by any user and less invasive

To use this solution, do the following

1. Open Environmental Variable dialog box


2. Create a HOME user environmental variable. Set the value to your desired home path


3. Apply the setting.

4. Restart your Cygwin shell and Cygwin should point your home root to your HOME environment variable. You can perform a echo $HOME or pwd to see the current setting




No comments:

Post a Comment

Oracle - Reclaim disk space

Oracle does not release disk space even if you had delete the data or tablespace. If you have enterprise manager, you should use it to  rec...