Safely change home directory

前端 未结 12 2321
南旧
南旧 2020-12-12 10:22

I\'m trying to safely update the home directory as specified in /etc/passwd, but the standard Linux utils - usermod and vipw - for doing so aren\'t provided by

相关标签:
12条回答
  • 2020-12-12 11:11

    I ended up exiting all my cygwin shells and editing it by hand in a text editor. So far, so good.

    Note: don't escape the spaces in the "Documents and Settings" directory. The entry will look like

    user:...:/cygdrive/c/Documents and Settings/user:/bin/bash
    

    The line is tokenized on the : character.

    0 讨论(0)
  • 2020-12-12 11:11

    I like to keep my cygwin installation sync'd to a pen drive and another computer, so I hate hard-coding the home directory. I use the following cygwin.bat:

    echo off
    SETLOCAL
    set SHELL=\\bin\\bash
    set HOME=%~dp0..\..\doc\unix
    bin\bash --login -i
    ENDLOCAL
    

    SETLOCAL and ENDLOCAL make sure that SHELL and HOME don't clobber existing env variables for other programs. HOME=%~dp0..\..\doc\unix sets HOME to be two directories up, in the doc/unix subdirectory. Then in ....\doc\unix.bashrc, I include PATH="/bin:/usr/local/bin:/usr/X11R6/bin:/usr/bin". I did not use start /wait %CD%\bin\bash to start bash, because I am using Console2, so I don't need an additional cmd window.

    0 讨论(0)
  • 2020-12-12 11:12

    I edited my /etc/passwd file directly (making sure nothing else would be accessing it), and changed all references to /home to be /Users (on Windows 7). I found that, in order for everything to work correctly, I had to delete any directories in the /home directory (or move them to the appropriate other location). Otherwise, cygwin would develop a split personality where, for example, 'bash -l' would start in /home/Pablo but $HOME would be /Users/Pablo and emacs would appear to do the reverse. Once I deleted /home/Pablo, everything worked fine.

    0 讨论(0)
  • 2020-12-12 11:17

    For the current user the following worked for me:

    1. Close Cygwin.
    2. Set the HOME Windows user environment variable.
    3. Start Cygwin.
    4. run "mkpasswd -c -p "$(cygpath -H)" > /etc/passwd".
    5. Restart Cygwin.

    I confirmed it worked by running ssh-keygen without any arguments. After making this change the app now defaults to saving the key to /cygdrive/c/Users/user instead of /home/user.

    I don't know if setting HOME is required, but I did it anyway per instructions for setting up TortoiseGit with Cygwin using Tortoise's official documentation for unofficial Cygwin support here. Setting HOME alone though was not enough for ssh-keygen to recognize the home directory change.

    Also, note that Cygwin's official documentation on this issue can be found here.

    Confirmed in Windows 7 using 64-bit Cygwin v1.7.35.

    0 讨论(0)
  • 2020-12-12 11:18

    I only needed to be in C:\Users\username when I start cygwin. So, I just added to .bashrc and .profile

    cd ${HOMEPATH}
    

    If you prefer to use ~/. instead of $HOMEPATH, you can also add the following:

    export HOME=${HOMEPATH}
    

    This way I don't disturb the cygwin installation.

    0 讨论(0)
  • 2020-12-12 11:21

    The simplest answer I have found is to make /home to be a soft link to your Windows Home/UserProfile directory

    cd /
    mv home oldhome
    ln -s "$(cygpath -H)" home
    

    I used cygpath as it will get the proper location for the HOME directory on the current version of Windows. On my box cygpath -H returns /cygdrive/c/Users

    0 讨论(0)
提交回复
热议问题