직장 컴퓨터에서 Cygwin의 홈 디렉토리를 변경하려고 합니다. 기본적으로 홈 디렉토리는 네트워크 공유에 매핑됩니다. 이것은 Cygwin에 대해 약간의 혼란을 야기하는 것 같습니다. 네트워크 공유와 동일한 경로를 따르는 디렉토리(cygwin을 여는 위치에 따라 다른 접두사)를 데스크탑에 생성했기 때문입니다.
설치 시 생성된 기본 바로가기에서 Cygwin을 열면:
$ echo $HOME
/cygdrive/c/Users/shaun/Desktop/SERVER/USERS:USERS/SHAUN
PowerShell에서 Cygwin을 열면:
$ echo $HOME
/usr/bin/SERVER/USERS:USERS/SHAUN
나는 프로그램을 직접 관리하기 위해 설정한 로컬 프로그램 디렉토리에 홈 디렉토리를 두고 싶습니다. 이와 같이:
/cygdrive/c/users/shaun/apps/cygwin/home/shaun
이를 수행하는 데 선호되는 방법은cygwin에서 권장하는대로, 에 항목을 작성하는 것입니다 /etc/nsswitch.conf
. 이렇게 해야 할 것 같습니다.
db_home: unix /%H/Apps/cygwin/home/shaun
이 파일에 대한 모든 변경 사항은 무시된 것 같습니다. 터미널을 다시 시작했는데 의도적으로 구문을 엉망으로 만든 경우에도 오류가 발생하지 않습니다. 시도했지만 실패한 옵션 중 일부는 다음과 같습니다.
db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
db_home: /%H/Apps/cygwin/home/shaun
db_home: unix /%H/Apps/cygwin/home/shaun
db_home: cygwin desc
db_home: cygwin /path /%H/Apps/cygwin/home/shaun
시도할 때마다 Cygwin 프로세스를 다시 시작했습니다. db_shell
옵션 도 /bin/sh
그냥 실험적으로 변경해봤는데 쉘은 바뀌지 않더군요.
StackExchange의 이전 질문에서는 파일 변경을 제안했는데 , HOME 디렉터리를 자동으로 생성하는 /etc/passwd
코드 블록을 주석 처리한 후에만 이 작업을 수행할 수 있었습니다 . /etc/profile
그리고 얼마 후 다시 예전의 HOME으로 돌아갔습니다.
파일 에 대해 내가 놓친 것이 있습니까 /etc/nsswitch.conf
? 사용자 정의 구성을 설정하는 것이 간단하고 편리한 방법인 것 같습니다. 대안은 Cygwin에서 권장하지 않는 오래된 해킹인 것처럼 보이지만, 제가 틀렸다면 어떤 방법이 선호되는지 알려주시기 바랍니다.
내 현재/etc/nsswitch.conf
# /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
db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
# db_shell: /bin/bash
# db_gecos: <empty>
답변1
db_home: unix /%H/Apps/cygwin/home/shaun
참조하는 매뉴얼 페이지에는 다음을 사용하라고 나와 있습니다.unix
또는a /path
, 둘 다 함께는 아닙니다.
AD 관리자가 조직에서 Cygwin을 사용하는 각 사용자에 대해 값을 설정하지 않는 한 전혀 사용하지 않고 대신 경로를 unixHomeDirectory
사용하고 싶습니다 .unix
귀하가 제공한 내용을 수정하는 것이 좋습니다.
db_home: /%H/Apps/cygwin/home/%u
이렇게 하면 동일한 컴퓨터의 여러 사용자가 설정을 사용할 수 있습니다.
이 파일에 대한 모든 변경 사항은 무시된 것 같습니다.
설정 을 재정의하는 방법에는 두 가지가 있습니다 nsswitch.conf
.
SAM 또는 AD 사용자 정보 데이터베이스를 생성
mkpasswd
하는 Cygwin 유틸리티를 실행합니다 . 이 메커니즘은/etc/passwd
/etc/group
쓸모없는, 레거시 Cygwin 설치 또는 특수 목적으로만 사용해야 합니다.%HOME%
Windows 시스템 수준에서 환경 변수를 설정합니다 .이는 Cygwin을 무시할 뿐만 아니라 특정 상황에서만 그렇게 합니다.권장하지 않음.
사용자 및 시스템 전체 환경 변수 세트를 모두 확인하여 이러한 일이 발생하지 않는지 확인하십시오.
StackExchange의 과거 질문에서는 /etc/passwd 파일 변경을 제안했습니다.
/etc/nsswitch.conf
이를 제거하고 대신 Cygwin이 상호 작용하는 방식을 제어하면서 사이트의 Active Directory 시스템을 사용해야 합니다 .
답변2
원격으로 마운트된 홈 디렉토리에 문제가 있을 때 "네트워크 드라이브 매핑" 기능을 사용하여 My Documents
드라이브 문자(예 U:\
: . 그런 다음 U:\
의 별칭이 됩니다 My Documents
. 그런 다음 요점 과 모든 것이 작동 /etc/passwd
하도록 편집했습니다 .~
/cygdrive/u
이 작업은 로컬 디렉터리에서도 수행할 수 있지만 "네트워크 드라이브 연결" 대신 별칭을 생성하려면 subst
에서 명령을 사용해야 합니다 . cmd.exe
네트워크 드라이브 매핑은 영구적이지만 subst
그렇지 않으므로 부팅할 때마다 이를 수행하는 스크립트를 Windows Start
폴더에 배치해야 합니다.