에 지정된대로 홈 디렉토리를 안전하게 업데이트하려고하는데 /etc/passwd
표준 Linux 유틸리티 인 usermod 및 vipw는 Cygwin에서 제공하지 않습니다.
누구든지 Cygwin에서 이것을 어떻게 변경했는지 말해 줄 수 있습니까?
답변
편집 : Cygwin (1.7.34 이상)의 최신 버전에 대해서는 이 최신 질문을 참조하십시오 .
sblundy의 답변처럼 언제든지 직접 편집 할 수 있습니다.
그러나 “공식적인”방식으로 수행하려면 cygwin 특정 mkpasswd
명령을 사용하십시오 . 다음은에 대한 공식 문서의 일부입니다 mkpasswd
.
예를 들어 다음 명령은 다음과 같습니다.
예제 3.11. 대체 홈 루트 사용
$ mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
로컬 사용자의 홈 디렉토리를 Windows ‘Profiles’디렉토리에 넣습니다.
Cygwin 유틸리티 문서 페이지 (포함 mkpasswd
) 에 설명 된 다른 정말 유용한 명령 이 많이 있습니다 . cygpath
위의 예에서 의 사용은 이러한 cygwin 관련 도구 중 하나입니다.
여기에있는 동안 Windows 문서에서 Cygwin을 효과적으로 사용 하기를 원할 수도 있습니다. 정말 좋은 조언이 많이 있습니다.
답변
결국 모든 cygwin 쉘을 종료하고 텍스트 편집기에서 직접 편집했습니다. 여태까지는 그런대로 잘됐다.
참고 : “Documents and Settings”디렉토리에서 공백을 이스케이프하지 마십시오. 항목은 다음과 같습니다.
user:...:/cygdrive/c/Documents and Settings/user:/bin/bash
라인은 :
캐릭터에서 토큰 화됩니다 .
답변
내가 찾은 가장 간단한 대답은 / home을 Windows Home / UserProfile 디렉토리에 대한 소프트 링크로 만드는 것입니다.
cd /
mv home oldhome
ln -s "$(cygpath -H)" home
현재 Windows 버전에서 HOME 디렉토리에 대한 적절한 위치를 얻을 수 있으므로 cygpath를 사용했습니다. 내 상자에 cygpath -H
반환/cygdrive/c/Users
답변
현재 사용자의 경우 다음이 나를 위해 일했습니다.
- Cygwin을 닫습니다.
- HOME Windows 사용자 환경 변수를 설정합니다.
- Cygwin을 시작하십시오.
- “mkpasswd -c -p”$ (cygpath -H) “> / etc / passwd”를 실행하십시오.
- Cygwin을 다시 시작하십시오.
인수없이 ssh-keygen을 실행하여 작동 함을 확인했습니다. 이 변경 후 앱은 이제 기본적으로 키를 / home / user 대신 / cygdrive / c / Users / user에 저장합니다.
HOME 설정이 필요한지 모르겠지만 여기 비공식 Cygwin 지원을위한 Tortoise의 공식 문서를 사용하여 Cygwin으로 TortoiseGit을 설정하는 지침에 따라 수행했습니다 . . ssh-keygen이 홈 디렉토리 변경을 인식하기에 충분하지 않지만 HOME을 설정하는 것만으로는 충분하지 않습니다.
또한이 문제에 대한 Cygwin의 공식 문서는 여기 에서 찾을 수 있습니다 .
64 비트 Cygwin v1.7.35를 사용하는 Windows 7에서 확인되었습니다.
답변
항상 컴퓨터 속성에서 HOME을 사용자 별 환경 변수로 설정합니다.
답변
홈 디렉토리 경로에 공백이있어 발생하는 문제를 방지하려면 Windows ‘Profiles’디렉토리의 약식을 사용하십시오 /cygdrive/c/DOCUME~1/user
. 즉 .
다음 명령을 입력하여이를 수행 할 수 있습니다.
mkpasswd -l -p "$(cygpath $(cygpath -dH))" > /etc/passwd
답변
저는 cygwin 설치를 펜 드라이브와 다른 컴퓨터에 동기화하는 것을 좋아하므로 홈 디렉토리를 하드 코딩하는 것을 싫어합니다. 다음 cygwin.bat를 사용합니다.
echo off
SETLOCAL
set SHELL=\\bin\\bash
set HOME=%~dp0..\..\doc\unix
bin\bash --login -i
ENDLOCAL
SETLOCAL 및 ENDLOCAL은 SHELL 및 HOME이 다른 프로그램의 기존 환경 변수를 방해하지 않도록합니다. HOME=%~dp0..\..\doc\unix
doc / unix 하위 디렉토리에서 HOME을 두 개의 디렉토리 위로 설정합니다. 그런 다음 …. \ doc \ unix.bashrc에 PATH="/bin:/usr/local/bin:/usr/X11R6/bin:/usr/bin"
. Console2를start /wait %CD%\bin\bash
사용하고 있기 때문에 bash를 시작 하는 데 사용하지 않았 으므로 추가 cmd 창이 필요하지 않습니다.