2012-04-10 27 views
19

Khi tôi đang phát triển Ruby on Rails trên máy Windows, tôi cần sử dụng Cygwin để mô phỏng dấu nhắc lệnh Unix. Vấn đề bây giờ là mỗi khi tôi mở thiết bị đầu cuối Cygwin, tôi được đưa vào thư mục này C:/cygwin/home/my_user_name thay vì thư mục người dùng mặc định của Windows C:/Users/my_user_name.Tạo thư mục nhà cygwin cho Cấu hình Người dùng Windows

Có ai biết cách đặt thư mục gốc mặc định của cygwin thành thư mục C:/Users/my_user_name mặc định của Windows không?

Tôi đã lướt qua các giải pháp khác nhau cung cấp trong Stack Overflow, nhưng không có giải pháp nào phù hợp với tôi, "mkpasswd" cũng không hoạt động. Điều này có liên quan gì đến phiên bản hệ điều hành của tôi hay có thể là cái gì khác không?

Tôi đang sử dụng Cygwin 1.7.5 và hệ điều hành của tôi là Windows 7 Business 64 bit.

+0

nên này đã chuyển đến superuser? –

Trả lời

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

liên quan

Safely change home directory

+0

Xin chào, cảm ơn vì sự khai sáng, nhưng bạn có thể giải thích thêm một chút về vấn đề này không? – lixiang

+0

FYI Tôi đã chỉnh sửa câu hỏi liên quan của mình (có vẻ như bạn đã downvoted và được gắn cờ để đóng là "không rõ ràng"). –

8

tôi đã có thể thay đổi của tôi bằng cách đơn giản thiết lập các biến môi trường HOME trong Windows để C:\Users\MyUsername. Khi tôi bắt đầu Cygwin, bây giờ nó trông ở đó. Điều này có lợi ích bổ sung gây Emacs trên Win32 thường xuyên (ví dụ, không thông qua Cygwin) để bắt đầu ở đúng nơi thay vì trong C:\Users\MyUsername\AppData\Roaming (và do đó tìm kiếm emacs và .emacs.d có)

+0

Khi tôi làm điều đó, Cygwin trả lại cho tôi: mkdir: không thể tạo thư mục '/ cygdrive/c/ProgramData/Microsoft/Windows/Trình đơn Start/Programs/Cygwin/\ 'C:': Quyền bị từ chối /cygdrive/c/ProgramData/Microsoft/Windows/Trình đơn/Chương trình/Cygwin/'C:/Users/CMCDragonkai' không thể được tạo. Đặt HOME thành/tmp. – CMCDragonkai

+0

Làm việc cho tôi, cảm ơn. – Robeezy

+0

Đừng quên đăng xuất/đăng nhập để biến môi trường này có hiệu lực. – Apteryx

6

Theo Cygwin documentation bạn có thể chỉnh sửa /etc/nsswitch.conf và thay đổi thông số de db_home.

  • % u - Tên người dùng Cygwin (chữ thường là u).
  • % U - Tên người dùng Windows (đó là chữ hoa chữ U).
  • % D - Miền Windows theo kiểu NetBIOS.
  • % H - Thư mục chính của Windows theo kiểu POSIX. Lưu ý rằng, đối với cài đặt db_home:,
  • % _ - Vì ký tự khoảng trắng và TAB được sử dụng để phân tách sơ đồ, một khoảng trống trong tên tệp phải được cung cấp dưới dạng% _ (đó là dấu gạch dưới).
  • %% - Một ký tự mỗi phần trăm.

Dưới đây là nội dung của /etc/nsswitch.conf của tôi để tạo ra một thư mục home vào từng thư mục người dùng

# /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> 

Khởi động lại bất kỳ quá trình Cygwin

+1

Lưu ý rằng điều này sẽ bị ghi đè nếu 'HOME' được đặt (như Hut8 gợi ý).Tôi thích giải pháp này nói chung, nhưng tôi đã tìm thấy một [trường hợp kỳ lạ mà một cái gì đó * khác * dường như ghi đè lên nó] (http://stackoverflow.com/q/41152489/1858225), vì vậy tôi đã chuyển sang giải pháp thiết lập biến môi trường Windows. –

+1

Điều này có vẻ là một giải pháp sạch hơn, nên được chấp nhận thay thế! –

Các vấn đề liên quan