Cygwin의 홈 변경

Cygwin의 홈 변경

직장 컴퓨터에서 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.

  1. SAM 또는 AD 사용자 정보 데이터베이스를 생성 mkpasswd하는 Cygwin 유틸리티를 실행합니다 . 이 메커니즘은/etc/passwd/etc/group쓸모없는, 레거시 Cygwin 설치 또는 특수 목적으로만 사용해야 합니다.

  2. %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폴더에 배치해야 합니다.

관련 정보