82

で指定されているようにホームディレクトリを安全に更新しようとしていますが/etc/passwd、そのための標準のLinux utils(usermodおよびvipw)はCygwinによって提供されていません。

Cygwinでこれをどのように変更したか誰か教えてもらえますか?

4

12 に答える 12

96

編集: Cygwin の最近のバージョン (1.7.34 以降) については、この新しい質問を参照してください。

sblundy の回答と同様に、いつでも手動で編集できます。

ただし、「公式」の方法で実行したい場合は、cygwin 固有のmkpasswdコマンドを使用してください。以下は、 の公式ドキュメントからの抜粋ですmkpasswd

たとえば、次のコマンドを実行します。

例 3.11。代替ホーム ルートの使用

$ mkpasswd -l -p "$(cygpath -H)" > /etc/passwd

ローカル ユーザーのホーム ディレクトリを Windows の「プロファイル」ディレクトリに配置します。

Cygwin Utilitiesのドキュメンテーション ページ ( を含む)には、他にも非常に便利なコマンドがたくさん説明されていますmkpasswd。上記の例での の使用はcygpath、これらの cygwin 固有のツールの 1 つです。

同時に、Windows で Cygwin を効果的に使用するドキュメントも読みたいと思うでしょう。本当に良いアドバイスがたくさんあります。

于 2008-11-29T05:52:02.903 に答える
19

結局、すべての cygwin シェルを終了し、テキスト エディターで手動で編集しました。ここまでは順調ですね。

注: 「Documents and Settings」ディレクトリ内のスペースをエスケープしないでください。エントリは次のようになります

user:...:/cygdrive/c/Documents and Settings/user:/bin/bash

行は:文字でトークン化されます。

于 2008-10-22T14:56:32.427 に答える
16

私が見つけた最も簡単な答えは、/home を Windows Home/UserProfile ディレクトリへのソフト リンクにすることです。

cd /
mv home oldhome
ln -s "$(cygpath -H)" home

現在のバージョンの Windows の HOME ディレクトリの適切な場所を取得するため、cygpath を使用しました。私の箱のcygpath -H返品について/cygdrive/c/Users

于 2012-04-25T18:28:27.940 に答える
8

現在のユーザーの場合、次のことがうまくいきました:

  1. Cygwin を閉じます。
  2. HOME Windows ユーザー環境変数を設定します。
  3. Cygwin を起動します。
  4. 「mkpasswd -c -p "$(cygpath -H)" > /etc/passwd」を実行します。
  5. Cygwin を再起動します。

引数なしで ssh-keygen を実行して、動作することを確認しました。この変更を行った後、アプリはデフォルトでキーを /home/user ではなく /cygdrive/c/Users/user に保存するようになります。

HOME の設定が必要かどうかはわかりませんが、非公式の Cygwin サポートに関する Tortoise の公式ドキュメントを使用して、Cygwin で TortoiseGit をセットアップする手順に従ってとにかく設定しまし。ただし、HOME を単独で設定するだけでは、ssh-keygen がホーム ディレクトリの変更を認識するのに十分ではありませんでした。

また、この問題に関する Cygwin の公式ドキュメントはこちらにあります

64 ビット Cygwin v1.7.35 を使用した Windows 7 で確認済み。

于 2015-04-22T14:38:47.177 に答える
4

私は常に HOME をコンピューターのプロパティでユーザー固有の環境変数として設定しています。

于 2008-10-22T13:54:16.563 に答える
2

私は 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\unixdoc/unix サブディレクトリ内の 2 つ上のディレクトリに HOME を設定します。次に ....\doc\unix.bashrc に を含めますPATH="/bin:/usr/local/bin:/usr/X11R6/bin:/usr/bin"Console2start /wait %CD%\bin\bashを使用しているため、bash の起動には使用しなかったため、追加の cmd ウィンドウは必要ありません。

于 2011-06-13T02:15:00.303 に答える
2

Windows 環境変数の使用: HOME

これは、永続的で、移植性がなく、ネットワーク以外のソリューションで機能します。つまり、Windows で HOME 環境変数を永続的に設定します。

これは、常に/etc/passwdを参照するsshまたはtelnetセッションには影響しないことに注意してください。

ref: Cygwin のセットアップ - 私の HOME 環境変数は、私が望むものではありません。

CMD

現在のユーザーの場合 (ユーザーごとに 1 回実行する必要があります) ::

reg add HKCU\Environment /v HOME /t REG_EXPAND_SZ /d ^%USERPROFILE^%

新規ユーザーの場合:

reg add HKU\.DEFAULT\Environment /v HOME /t REG_EXPAND_SZ /d ^%USERPROFILE^%

注:パーセント記号 % ののキャレット ^

REG ファイルのインポート

この reg ファイルをインポートします (現在のユーザー):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Environment]
"HOME"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,00,00

新規ユーザーの場合:

Windows Registry Editor Version 5.00

[HKU\.DEFAULT\Environment]
"HOME"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,00,00

レジストリ編集

Regedit の次の場所:

現在のユーザーの場合:

HKEY_CURRENT_USER\Environment

新規ユーザーの場合:

HKU\.DEFAULT\Environment

新しい展開可能な文字列値(*REG_EXPAND_SZ*)としてHOMEを作成し、 %USERPROFILE%に入れます

于 2012-05-30T15:01:15.377 に答える
1
cd /home
rm -rf chris
ln -s /cygdrive/z chris

それが最も安全な解決策であるかどうかはよくわかりませんが、私にとってはうまくいく可能性のある解決策です;)

于 2016-02-17T08:32:09.600 に答える
0

/etc/passwd ファイルを直接編集し (他に何もアクセスしないようにします)、/home へのすべての参照を /Users に変更しました (Windows 7 の場合)。すべてが正しく機能するためには、/home ディレクトリ内のすべてのディレクトリを削除する (または適切な別の場所に移動する) 必要があることがわかりました。そうしないと、cygwin は分割されたパーソナリティを開発します。たとえば、'bash -l' は /home/Pablo で始まりますが、$HOME は /Users/Pablo になり、emacs はその逆を行うように見えます。/home/Pablo を削除すると、すべて正常に動作しました。

于 2014-10-14T22:46:31.967 に答える