2012-04-10 18 views
19

Podczas rozwijania Ruby on Rails na komputerze z systemem Windows, potrzebuję użyć cygwin do emulowania wiersza poleceń Unix. Problem polega na tym, że za każdym razem, gdy otwieram terminal cygwin, jestem przenoszony do tego katalogu C:/cygwin/home/my_user_name zamiast domyślnego katalogu użytkownika Windows C:/Users/my_user_name.Tworzenie katalogu domowego cygwin do Windowsa 'User Profile

Czy ktoś wie, jak uczynić domyślny katalog domowy cygwin domyślnym katalogiem C:/Users/my_user_name w systemie Windows?

Przeglądałem różne rozwiązania w Stack Overflow, ale żaden z nich nie działa dla mnie, "mkpasswd" też nie działa. Czy ma to coś wspólnego z wersją mojego systemu operacyjnego, czy może z czymś innym?

Używam cygwin 1.7.5, a mój system operacyjny to Windows 7 Business 64 bit.

+0

powinno to już przeniósł się do superużytkownika? –

Odpowiedz

18
mount -f "$USERPROFILE" ~ 
mount -m > /etc/fstab 

Powiązane

Safely change home directory

+0

Witam, dziękuję za oświecenie, ale czy możesz wyjaśnić nieco więcej na ten temat? – lixiang

+0

FYI Dokonałem edycji mojego pokrewnego pytania (które, jak się wydaje, obniżyło ocenę i oznaczono jako "niejasne"). –

8

udało mi się zmienić moje, po prostu ustawiając zmienną środowiskową HOME w systemie Windows do C:\Users\MyUsername. Kiedy zaczynam Cygwin, teraz wygląda na to. Ma to tę dodatkową zaletę, powodując Emacs regularnie Win32 (czyli nie poprzez Cygwin) rozpocznie się w odpowiednim miejscu, a nie w C:\Users\MyUsername\AppData\Roaming (a więc patrząc na .emacs i .emacs.d tam)

+0

Kiedy to robię, Cygwin daje mi to: mkdir: nie można utworzyć katalogu '/ cygdrive/c/ProgramData/Microsoft/Windows/Start Menu/Programy/Cygwin/\ 'C:': Odmowa uprawnień /cygdrive/c/ProgramData/Microsoft/Windows/Start Menu/Programy/Cygwin/'C:/Users/CMCDragonkai' could not be created. Ustawienie HOME na/tmp. – CMCDragonkai

+0

Pracowałem dla mnie, dzięki. – Robeezy

+0

Nie zapomnij się wylogować/zalogować, aby zmienna środowiskowa została zastosowana. – Apteryx

6

Według Cygwin documentation ty można edytować /etc/nsswitch.conf i zmienić parametr de db_home.

  • % u - Nazwa użytkownika Cygwin (jest to małe litery u).
  • % U - Nazwa użytkownika systemu Windows (jest to wielkie litery U).
  • % D - Domena Windows w stylu NetBIOS.
  • % H - Katalog domowy Windows w stylu POSIX. Zauważ, że dla ustawienia db_home:
  • % _ - Ponieważ znaki spacji i TAB są używane do oddzielenia schematu, spacja w nazwie pliku musi być podana jako% _ (to podkreślenie).
  • %% - Postać procentowa.

Oto treść mojego /etc/nsswitch.conf utworzyć katalog home do każdego katalogu użytkownika

# /etc/nsswitch.conf 
# 
# This file is read once by the first process in a Cygwin process tree. 
# To pick up changes, restart all Cygwin processes. For a description 
# see https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch  
# Defaults: 
# passwd: files db 
# group: files db 
# db_enum: cache builtin 
# db_home: /home/%U <------ This was the default setting 
db_home: /%H/home # db_home: /home/%U <- This was the default setting 
# db_shell: /bin/bash 
# db_gecos: <empty> 

ponownego uruchomienia dowolnego procesu Cygwin

+1

Należy zauważyć, że zostanie to przesłonięte, jeśli ustawione jest 'HOME' (jak sugeruje Hut8).Wolę to rozwiązanie w ogóle, ale znalazłem [dziwny przypadek, w którym coś * jeszcze * zdaje się go zastępować] (http://stackoverflow.com/q/41152489/1858225), więc przerzuciłem się na rozwiązanie ustawienie zmiennej środowiskowej Windows. –

+1

To wydaje się być czystsze rozwiązanie, należy je przyjąć! –

Powiązane problemy