Git BashのWindowsインストールで〜ディレクトリの場所を変更する


138

私が正しい質問をしているのかどうかさえわかりません。私の状況を説明しましょう:

これはWindows 7のGitについてです。

私の会社では、ローカルハードドライブではなくネットワークドライブにWindowsユーザーディレクトリを設定しています(この質問の範囲を超えるバックアップやその他の目的のため)。私はその方針を変えることはできません。

ただし、そのスキームの外にローカルファイルを置くことはできます。これが私のApacheサーバーのセットアップ方法です。完全にローカル。

Gitをインストールしました。Bashをインストールします。Bashを起動してcd ~(ルートディレクトリに移動)、ネットワークユーザーディレクトリを指している(Bashルート)ことがわかりました。私はそれをしたくないです。~ハードドライブの別の場所にいたい 。証明書、SSHキーなどのインストールなどの他の操作を実行するときに、デフォルトでそのネットワークディレクトリが自動的に使用されないようにするためです。

私はいたるところに無駄な検索をしてきましたが、見つけることができるすべては、エイリアス、リダイレクト、および$ HOMEが指す場所を含む回答を参照しています。しかし、それは私がまったく望んでいないことです。

問題は、そのディレクトリを変更できるかどうかです。もしそうなら:どのように?

更新:つまり、$ HOMEは私が変更する必要があるものです。しかし、この神秘的な$ HOME変数が設定されている場所を見つけることができなかったので、LinuxシステムバージョンのPATHなどであると想定しました。とにかく ...

の下に「プロファイル」ファイルがありますgit/etc。内容は次のとおりです($ HOMEは通知されません)。

  # To the extent possible under law, the author(s) have dedicated all
  # copyright and related and neighboring rights to this software to the
  # public domain worldwide. This software is distributed without any warranty.
  # You should have received a copy of the CC0 Public Domain Dedication along
  # with this software.
  # If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.


  # System-wide profile file

  # Some resources...
  # Customizing Your Shell: http://www.dsl.org/cookbook/cookbook_5.html#SEC69
  # Consistent BackSpace and Delete Configuration:
  #   http://www.ibb.net/~anne/keyboard.html
  # The Linux Documentation Project: http://www.tldp.org/
  # The Linux Cookbook: http://www.tldp.org/LDP/linuxcookbook/html/
  # Greg's Wiki http://mywiki.wooledge.org/

  # Setup some default paths. Note that this order will allow user installed
  # software to override 'system' software.
  # Modifying these default path settings can be done in different ways.
  # To learn more about startup files, refer to your shell's man page.

  MSYS2_PATH="/usr/local/bin:/usr/bin:/bin"
  MANPATH="/usr/local/man:/usr/share/man:/usr/man:/share/man:${MANPATH}"
  INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/share/info:${INFOPATH}"
  MINGW_MOUNT_POINT=
  if [ -n "$MSYSTEM" ]
  then
    case "$MSYSTEM" in
      MINGW32)
        MINGW_MOUNT_POINT=/mingw32
        PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
        PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
        ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
        MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
      ;;
      MINGW64)
        MINGW_MOUNT_POINT=/mingw64
        PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
        PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
        ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
        MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
      ;;
      MSYS)
        PATH="${MSYS2_PATH}:/opt/bin:${PATH}"
        PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig"
      ;;
      *)
        PATH="${MSYS2_PATH}:${PATH}"
      ;;
    esac
  else
    PATH="${MSYS2_PATH}:${PATH}"
  fi

  MAYBE_FIRST_START=false
  SYSCONFDIR="${SYSCONFDIR:=/etc}"

  # TMP and TEMP as defined in the Windows environment must be kept
  # for windows apps, even if started from msys2. However, leaving
  # them set to the default Windows temporary directory or unset
  # can have unexpected consequences for msys2 apps, so we define
  # our own to match GNU/Linux behaviour.
  ORIGINAL_TMP=$TMP
  ORIGINAL_TEMP=$TEMP
  #unset TMP TEMP
  #tmp=$(cygpath -w "$ORIGINAL_TMP" 2> /dev/null)
  #temp=$(cygpath -w "$ORIGINAL_TEMP" 2> /dev/null)
  #TMP="/tmp"
  #TEMP="/tmp"
  case "$TMP" in *\\*) TMP="$(cygpath -m "$TMP")";; esac
  case "$TEMP" in *\\*) TEMP="$(cygpath -m "$TEMP")";; esac
  test -d "$TMPDIR" || test ! -d "$TMP" || {
    TMPDIR="$TMP"
    export TMPDIR
  }


  # Define default printer
  p='/proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows/Device'
  if [ -e "${p}" ] ; then
    read -r PRINTER < "${p}"
    PRINTER=${PRINTER%%,*}
  fi
  unset p

  print_flags ()
  {
    (( $1 & 0x0002 )) && echo -n "binary" || echo -n "text"
    (( $1 & 0x0010 )) && echo -n ",exec"
    (( $1 & 0x0040 )) && echo -n ",cygexec"
    (( $1 & 0x0100 )) && echo -n ",notexec"
  }

  # Shell dependent settings
  profile_d ()
  {
    local file=
    for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1); do
      [ -e "${file}" ] && . "${file}"
    done

    if [ -n ${MINGW_MOUNT_POINT} ]; then
      for file in $(export LC_COLLATE=C; echo ${MINGW_MOUNT_POINT}/etc/profile.d/*.$1); do
        [ -e "${file}" ] && . "${file}"
      done
    fi
  }

  for postinst in $(export LC_COLLATE=C; echo /etc/post-install/*.post); do
    [ -e "${postinst}" ] && . "${postinst}"
  done

  if [ ! "x${BASH_VERSION}" = "x" ]; then
    HOSTNAME="$(/usr/bin/hostname)"
    profile_d sh
    [ -f "/etc/bash.bashrc" ] && . "/etc/bash.bashrc"
  elif [ ! "x${KSH_VERSION}" = "x" ]; then
    typeset -l HOSTNAME="$(/usr/bin/hostname)"
    profile_d sh
    PS1=$(print '\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME} \033[33m${PWD/${HOME}/~}\033[0m\n$ ')
  elif [ ! "x${ZSH_VERSION}" = "x" ]; then
    HOSTNAME="$(/usr/bin/hostname)"
    profile_d zsh
    PS1='(%n@%m)[%h] %~ %% '
  elif [ ! "x${POSH_VERSION}" = "x" ]; then
    HOSTNAME="$(/usr/bin/hostname)"
    PS1="$ "
  else
    HOSTNAME="$(/usr/bin/hostname)"
    profile_d sh
    PS1="$ "
  fi

  if [ -n "$ACLOCAL_PATH" ]
  then
    export ACLOCAL_PATH
  fi

  export PATH MANPATH INFOPATH PKG_CONFIG_PATH USER TMP TEMP PRINTER HOSTNAME PS1 SHELL tmp temp
  test -n "$TERM" || export TERM=xterm-256color

  if [ "$MAYBE_FIRST_START" = "true" ]; then
    sh /usr/bin/regen-info.sh

    if [ -f "/usr/bin/update-ca-trust" ]
    then
      sh /usr/bin/update-ca-trust
    fi

    clear
    echo
    echo
    echo "###################################################################"
    echo "#                                                                 #"
    echo "#                                                                 #"
    echo "#                   C   A   U   T   I   O   N                     #"
    echo "#                                                                 #"
    echo "#                  This is first start of MSYS2.                  #"
    echo "#       You MUST restart shell to apply necessary actions.        #"
    echo "#                                                                 #"
    echo "#                                                                 #"
    echo "###################################################################"
    echo
    echo
  fi
  unset MAYBE_FIRST_START

~ホームディレクトリを表します。変更HOME、それがどこに行くの環境変数は変更されます。

ただ注意:HOME環境変数は、~ポイントする場所だけでなく、ユーザーのホームディレクトリにアクセスしているものすべてがそこに移動する必要があることも変更します。
David FerenczyRogožan15年

~は「ユーザーのホームディレクトリ」の省略形にすぎないため、どこを~指していても、ユーザーのホームディレクトリが存在します。
David FerenczyRogožan15年

ええ、設定する$ HOME変数が見つかりません。上記で、プロファイルファイルの外観を追加しました。
PEWColina 2015

おそらく、あなたはおそらく異なるバージョンのGitを使用しています。どのバージョンがありますか?ところで、プロファイルの最後にHOMEの設定を追加しようとします。ただし、別の場所で上書きされる可能性があります。
David FerenczyRogožan15年

回答:


140

私は理解していません。なぜ$HOME環境変数を設定したくないのですか?それはあなたが求めていることを正確に解決するからです。

cd ~ない意味は、ルートディレクトリに変更しますが、ユーザのホームディレクトリへの変更によって設定され、$HOME環境変数を。

クイックアンドダーティーソリューション

変数を編集して必要な値にC:\Program Files (x86)\Git\etc\profile設定し$HOMEます(存在しない場合は追加します)。たとえば、によってコメントされた状態の直後が良い場所# Set up USER's home directoryです。たとえば、MinGW形式である必要があります。

HOME=/c/my/custom/home

それを保存し、Git Bashを開いて実行しcd ~ます。これでディレクトリに移動するはず/c/my/custom/homeです。

ユーザーのプロファイルにアクセスするものはすべて、ネットワークドライブ上のWindowsのプロファイルではなく、このディレクトリに移動する必要があります。

注: C:\Program Files (x86)\Git\etc\profileはすべてのユーザーによって共有されるため、マシンを複数のユーザーが使用する場合は、$HOME動的に設定することをお勧めします。

HOME=/c/Users/$USERNAME

よりクリーンなソリューション

HOMEWindows の環境変数を任意のディレクトリに設定します。この場合、Windowsのパス形式(バックスラッシュなどc:\my\custom\home)で設定する必要があります。GitBashはそれをロードして、その形式に変換します。

マシン上のすべてのユーザーのホームディレクトリ変更する場合は、システム環境変数として設定します。たとえば、%USERNAME%変数を使用して、すべてのユーザーが独自のホームディレクトリを持つようにします。次に例を示します。

HOME=c:\custom\home\%USERNAME%

ホームディレクトリを自分だけ変更したい場合は、他のユーザーが影響を受けないように、ユーザー環境変数として設定してください。この場合、パス全体を単純にハードコーディングできます。

HOME=c:\my\custom\home

3
おかげで、プロファイルファイルで$ HOME変数が見つかりません。質問に追加しました。ぜひご覧ください。多分私は他の場所でその変数を探す必要がありますか?
PEWColina 2015

1
ディレクトリ全体の他のファイルは、$ HOMEを呼び出し/設定しません。
PEWColina 2015

1
それで、どこかに追加しようとしたのですか?たとえばの下部にprofileHOMEgit-bashでは、変数の内容は次のようになるはずです/c/some/path
David FerenczyRogožan2015

6
プロファイルファイルの先頭にHOMEを追加することができました。HOME="c://path/to/custom/root/"
PEWColina

3
'home'システム環境変数を追加すると、gitフォルダーのプロファイルファイルを編集するのではなく、問題が解決しました
firstpostcommenter

43

私の場合、Windowsで次のUser変数を追加するだけで済みました。

変数名:HOME
変数値:%USERPROFILE%

環境変数の設定方法(システム管理者でない場合は、ユーザー名セクションのユーザー変数を使用できます)


3
これは私にとっては完璧に機能し、受け入れられた答えに対するIMOのより良い解決策です。
dan_g 2018

2
この答えは先頭に行く必要があります。
user4015990 2018

1
これは機能しましたが、同じマシンで複数のユーザーを使用する場合は機能しませんでした。HOME=/c/Users/$USERNAMEプロファイルに追加する必要がありました。
gonzo

3
これが一番の答えになるはずです。これが、GitBashでWindowsユーザーフォルダー(C:\ Users \ UserName)の.sshディレクトリを使用する唯一の方法(私が見つけた唯一の方法)です。私のシステムでは、デフォルトで%HOMEDRIVE%(M :)になりました。そしてもちろん、それでもGitBashにアップデートして更新できます!
YanisTheYak

1
これは$ HOME変数が設定されていない場合に機能しますが、OPには会社のポリシーによって$ HOMEが設定されているようです。私も彼の問題を抱えています。その場合、この回答は機能しません(新しい設定は会社のポリシーによって自動的に上書きされます)。
ビットマック

38

私がやったことを共有します。これはGitだけでなくMSYS / MinGWでも機能します。

HOMEWindowsのを通してそれを作ることは何かに影響を与えなかったので、環境変数は、通常、Windowsアプリケーション用に設定されていません。[コンピューターのプロパティ](エクスプローラーで[コンピューター-またはコンピューターの名前を右クリックしてプロパティ]を選択するか、[コントロールパネル]-> [システムとセキュリティ]-> [システム]から)を選択しAdvanced system settingsEnvironment Variables...新しいコンピューターを作成してHOME割り当てます。どこでも好きです。

新しい環境変数を作成できない場合でも、他の答えは機能します。(見つけるのがとても難しいので、環境変数を作成する方法の詳細を調べました。)


4
コントロールパネルから環境を変更するための管理アクセス権がない場合 rundll32 sysdm.cpl,EditEnvironmentVariablesは、コマンドプロンプトから次のコマンドを発行するenvironment、スタートメニューに入力して同じコマンドを起動する必要があります。
Chris Chiasson

2
これは、git-bashのホームディレクトリを設定するのに役立ちました。WindowsでHOME環境変数を設定しても大丈夫であることを再確認していただきありがとうございます。また、その方法の詳細な手順も説明しています。私の目標を達成するための1つの簡単な変更。
Stephen Hosking

%USERPROFILE%HOME環境変数に適した値です。私の答えを見てください
EliandroRibeiro 2017

@EliandroRibeiroそれは可能性であり、あなたのニーズに応じて、おそらく良いアイデアです。私自身、特にそのようにやることはしませんでした。(混乱を避けるために)WindowsとUnixのような環境を別々に保つためと、ルートツリーにmy HOME~)をより近くするため/。私は実際にディレクトリC:/homeを作成し、それを使用しています。また、OPWは、彼にとって、彼%USERPROFILE%はネットワークドライブ上にあり、あなたが説明したように使用するのはひどく苦痛であると述べました。
Menachem 2018年

1
はい、メナケム、正確であることに感謝しますが、私が達成したかったのは、単にプロセスの詳細ですが、結果にストレスをかけることでした。これは、Stephen Hoskingや私を含む多くの人々によって確認されました。つまり、私にとっては最終的な結果が重要であり、その他の詳細は気を散らすものです。よろしくお願いします。
xpt

21

グローバルprofileを変更する代わりに、次の内容で.bash_profileデフォルト$HOMEディレクトリ(例:)にを作成できますC:\Users\WhateverUser\.bash_profile

export HOME="C:\my\projects\dir"
cd "$HOME" # if you'd like it to be the starting dir of the git shell

はい!.bash_profileあなたの環境をカスタマイズする正しい方法です、ハッキング.profileは良い習慣ではありません。
ブログの

1
@ropata「ハッキング」~/.profileは問題ありません。実際、ドキュメント~/.bash_profieでは「システム全体ではなく特定のユーザーのみに影響を与える環境変数に適したファイルは...〜/ .profile」よりも優先されます。そして: "...〜/ .bash_profile ...のようなシェル設定ファイルは環境変数を設定するためにしばしば提案されます。これはシェルから開始されたプログラムのBashシェルで動作するかもしれませんが、それらのファイルで設定された変数はデフォルトでは利用できません。デスクトップセッションでグラフィカル環境から開始されたプログラムに」help.ubuntu.com/community/EnvironmentVariables
Hawkeye Parker、

7

1. Gitbashショートカットを右クリックして[プロパティ]を選択します
2. [ショートカット]タブを選択します3. [
開始] フィールドに開始ディレクトリを入力します4. [ ターゲット] フィールド
から「--cd-to-home」の部分を削除します


5
実際に$HOME変数を変更するわけではありません
roblogic '21 / 12/17

1
Windowsのバージョンは何ですか?に到達することは可能ではないようで、プロパティのWindows 10で
ピーター・モーテンセン

Gitbash SHORTCUTに@PeterMortensen右クリックして[プロパティ]を選択します
ÖzgürÖztürk

4

したがって、$ HOMEは変更する必要があるものです。しかし、この神秘的な$ HOME変数が設定されている場所を見つけることができなかったので、LinuxシステムバージョンのPATHなどであると想定しました。とにかく ... **

回答

profileファイルの先頭にHOMEを追加すると機能しました。

HOME="c://path/to/custom/root/"

  #THE FIX WAS ADDING THE FOLLOWING LINE TO THE TOP OF THE PROFILE FILE

  HOME="c://path/to/custom/root/"

  # below are the original contents ===========
  # To the extent possible under law, ..blah blah

  # Some resources...
  # Customizing Your Shell: http://www.dsl.org/cookbook/cookbook_5.html#SEC69
  # Consistent BackSpace and Delete Configuration:
  #   http://www.ibb.net/~anne/keyboard.html
  # The Linux Documentation Project: http://www.tldp.org/
  # The Linux Cookbook: http://www.tldp.org/LDP/linuxcookbook/html/
  # Greg's Wiki http://mywiki.wooledge.org/

  # Setup some default paths. Note that this order will allow user installed
  # software to override 'system' software.
  # Modifying these default path settings can be done in different ways.
  # To learn more about startup files, refer to your shell's man page.

  MSYS2_PATH="/usr/local/bin:/usr/bin:/bin"
  MANPATH="/usr/local/man:/usr/share/man:/usr/man:/share/man:${MANPATH}"
  INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/share/info:${INFOPATH}"
  MINGW_MOUNT_POINT=
  if [ -n "$MSYSTEM" ]
  then
    case "$MSYSTEM" in
      MINGW32)
        MINGW_MOUNT_POINT=/mingw32
        PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
        PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
        ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
        MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
      ;;
      MINGW64)
        MINGW_MOUNT_POINT=/mingw64
        PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
        PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
        ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
        MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
      ;;
      MSYS)
        PATH="${MSYS2_PATH}:/opt/bin:${PATH}"
        PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig"
      ;;
      *)
        PATH="${MSYS2_PATH}:${PATH}"
      ;;
    esac
  else
    PATH="${MSYS2_PATH}:${PATH}"
  fi

  MAYBE_FIRST_START=false
  SYSCONFDIR="${SYSCONFDIR:=/etc}"

  # TMP and TEMP as defined in the Windows environment must be kept
  # for windows apps, even if started from msys2. However, leaving
  # them set to the default Windows temporary directory or unset
  # can have unexpected consequences for msys2 apps, so we define
  # our own to match GNU/Linux behaviour.
  ORIGINAL_TMP=$TMP
  ORIGINAL_TEMP=$TEMP
  #unset TMP TEMP
  #tmp=$(cygpath -w "$ORIGINAL_TMP" 2> /dev/null)
  #temp=$(cygpath -w "$ORIGINAL_TEMP" 2> /dev/null)
  #TMP="/tmp"
  #TEMP="/tmp"
  case "$TMP" in *\\*) TMP="$(cygpath -m "$TMP")";; esac
  case "$TEMP" in *\\*) TEMP="$(cygpath -m "$TEMP")";; esac
  test -d "$TMPDIR" || test ! -d "$TMP" || {
    TMPDIR="$TMP"
    export TMPDIR
  }


  # Define default printer
  p='/proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows/Device'
  if [ -e "${p}" ] ; then
    read -r PRINTER < "${p}"
    PRINTER=${PRINTER%%,*}
  fi
  unset p

  print_flags ()
  {
    (( $1 & 0x0002 )) && echo -n "binary" || echo -n "text"
    (( $1 & 0x0010 )) && echo -n ",exec"
    (( $1 & 0x0040 )) && echo -n ",cygexec"
    (( $1 & 0x0100 )) && echo -n ",notexec"
  }

  # Shell dependent settings
  profile_d ()
  {
    local file=
    for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1); do
      [ -e "${file}" ] && . "${file}"
    done

    if [ -n ${MINGW_MOUNT_POINT} ]; then
      for file in $(export LC_COLLATE=C; echo ${MINGW_MOUNT_POINT}/etc/profile.d/*.$1); do
        [ -e "${file}" ] && . "${file}"
      done
    fi
  }

  for postinst in $(export LC_COLLATE=C; echo /etc/post-install/*.post); do
    [ -e "${postinst}" ] && . "${postinst}"
  done

  if [ ! "x${BASH_VERSION}" = "x" ]; then
    HOSTNAME="$(/usr/bin/hostname)"
    profile_d sh
    [ -f "/etc/bash.bashrc" ] && . "/etc/bash.bashrc"
  elif [ ! "x${KSH_VERSION}" = "x" ]; then
    typeset -l HOSTNAME="$(/usr/bin/hostname)"
    profile_d sh
    PS1=$(print '\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME} \033[33m${PWD/${HOME}/~}\033[0m\n$ ')
  elif [ ! "x${ZSH_VERSION}" = "x" ]; then
    HOSTNAME="$(/usr/bin/hostname)"
    profile_d zsh
    PS1='(%n@%m)[%h] %~ %% '
  elif [ ! "x${POSH_VERSION}" = "x" ]; then
    HOSTNAME="$(/usr/bin/hostname)"
    PS1="$ "
  else
    HOSTNAME="$(/usr/bin/hostname)"
    profile_d sh
    PS1="$ "
  fi

  if [ -n "$ACLOCAL_PATH" ]
  then
    export ACLOCAL_PATH
  fi

  export PATH MANPATH INFOPATH PKG_CONFIG_PATH USER TMP TEMP PRINTER HOSTNAME PS1 SHELL tmp temp
  test -n "$TERM" || export TERM=xterm-256color

  if [ "$MAYBE_FIRST_START" = "true" ]; then
    sh /usr/bin/regen-info.sh

    if [ -f "/usr/bin/update-ca-trust" ]
    then
      sh /usr/bin/update-ca-trust
    fi

    clear
    echo
    echo
    echo "###################################################################"
    echo "#                                                                 #"
    echo "#                                                                 #"
    echo "#                   C   A   U   T   I   O   N                     #"
    echo "#                                                                 #"
    echo "#                  This is first start of MSYS2.                  #"
    echo "#       You MUST restart shell to apply necessary actions.        #"
    echo "#                                                                 #"
    echo "#                                                                 #"
    echo "###################################################################"
    echo
    echo
  fi
  unset MAYBE_FIRST_START

2

だから、$HOME私が変更する必要があるものです。

ただし、この神秘的な$HOME変数が設定されている場所を見つけることができなかったので、PATHのLinuxシステムバージョンか何かだと思いました。

Git 2.23(2019年第3四半期)HOMEは、設定方法について非常に明確です。

Karsten Blees()によるcommit e12a955(2019年7月4日)を参照してください。(合併によりJunio C浜野- -fc613d2コミット 2019年7月19日)kblees
gitster

mingw:起動時にHOMEを初期化する

HOME初期化は/etc/profilegit-bash.vbsgitk.cmd、などの起動スクリプト、および(わずかに壊れていますが)などのさまざまな場所で歴史的に複製されましたgit-wrapper

などであっても関係のないプロジェクトGitExtensionsTortoiseGit直接のgitを呼び出すことができるように同じロジックを実装する必要があります。

初期HOMEのGit独自のスタートアップコードでは、我々は最終的にすべての重複初期化コードを引退することができますように。

現在、mingw.cには次のコードが含まれています。

/* calculate HOME if not set */
if (!getenv("HOME")) {
    /*
     * try $HOMEDRIVE$HOMEPATH - the home share may be a network
     * location, thus also check if the path exists (i.e. is not
     * disconnected)
     */
    if ((tmp = getenv("HOMEDRIVE"))) {
        struct strbuf buf = STRBUF_INIT;
        strbuf_addstr(&buf, tmp);
        if ((tmp = getenv("HOMEPATH"))) {
            strbuf_addstr(&buf, tmp);
            if (is_directory(buf.buf))
                setenv("HOME", buf.buf, 1);
            else
                tmp = NULL; /* use $USERPROFILE */
        }
        strbuf_release(&buf);
    }
    /* use $USERPROFILE if the home share is not available */
    if (!tmp && (tmp = getenv("USERPROFILE")))
        setenv("HOME", tmp, 1);
}

0

私はまったく同じ問題に直面しました。ネットワークドライブにマップされたホームドライブ。また

  1. ホームドライブへの書き込みアクセス権なし
  2. Git bashプロファイルへの書き込みアクセス権なし
  3. コントロールパネルから環境変数を変更する管理者権限はありません。

しかし、以下はコマンドラインから動作HOMEし、環境変数に追加することができました。

rundll32 sysdm.cpl,EditEnvironmentVariables


これは、環境変数エディタにアクセスするだけで、コンソールのショートカットです
ラウル・サリナス- Monteagudo

-1

私はこれが古い質問であることを知っていますが、「gitbash homedir windows」のGoogleでの上位の検索結果なので、調査結果を追加すると思います。

何を試してもgit-bashをどこからでも起動できませんでした。私の場合、すべての操作の応答に15〜20秒かかります。(VPNのリモート従業員、国の反対側でホストされているネットワークドライブ)

WindowsでHOMEおよびHOMEDIR変数を設定してみました。

gitインストールのetc / profileファイルにHOMEおよびHOMEDIR変数を設定してみました。

git-bashショートカットの「Start in」をC:/ user / myusernameに編集してみました。

git-bashシェル内の「env」コマンドは、正しいc:/ user / myusernameを表示します。しかし、git-bashはUで始まります:

最終的に私のために修正されたのは、git-bashショートカットを編集して、「-cd-to-home」をターゲット行から削除することでした。

最新バージョンのGit-for-windows 2.22.0を実行しているWindows 10を使用しています。


1
こんにちはgrsiepka-SOへの最初の貢献に感謝します。あなたの答えを読んで(私はそれをレビューしています)飛び出るのは、それは答えだけではなく、あなたがすべてしようとしたことの説明がうまくいかなかったことです;)他のユーザーが答えを探してこの質問を見つけたと想像してみてください-そして、彼らは(受け入れられた)答えを期待する/望み、問題の修正方法を伝えます。これを念頭に置いて良い答えが書かれています。回答を編集して短くできますか?ありがとう。
Carlo Wood

「受け入れられた」答えはどれも私にとってうまくいきませんでした。私は何をしたかを投稿しました。それが役に立たない場合は、私の答えを自由に削除してください。
grsiepka

-6

ここに行く:ここに行く:システムの復元ポイントを作成します。管理者アカウントでログオンします。C:\ SomeUserフォルダーを削除します。フォルダーc:\ Users \ SomeUserを移動して、c:\ SomeUserにします。レジストリエディタを開きます。HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileListに移動します。「ProfileImagePath」を検索して、c:\ Users \ SomeUserを指すものを見つけます。c:\ SomeUserを指すように変更します。問題が発生した場合に備えて、システムの復元を使用します。


4
これにより、彼のWindowsユーザープロファイルが移動します。私はそれが彼の望んでいることだとは思いません。
David FerenczyRogožan15年

1
そして恐らく、企業の体制下では、彼はこれに対する許可を持っていないかもしれません。
Menachem 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.