programing

Git Bash의 윈도우즈 설치에서 ~ 디렉토리의 위치 변경

powerit 2023. 6. 27. 22:38
반응형

Git Bash의 윈도우즈 설치에서 ~ 디렉토리의 위치 변경

나는 내가 올바른 질문을 하고 있는지조차 확신할 수 없습니다.제 상황을 설명하겠습니다.

Windows 7(윈도우 7)의 Git에 대한 내용입니다.

당사에서는 로컬 하드 드라이브가 아닌 네트워크 드라이브에 Windows 사용자 디렉토리를 설정합니다(이 질문의 범위를 벗어나는 백업 및 기타 목적).저는 그 정책을 변경할 수 없습니다.

로컬 파일을 해당 구성표 밖에 둘 수는 있지만, 이렇게 Apache 서버가 설정됩니다.완전히 지역적인.

Git 설치했습니다.Bash를 설치합니다.내가 바쉬를 불태울 때 그리고cd ~(루트 디렉토리로 변경) Bash 루트가 네트워크 사용자 디렉토리를 가리킨다는 것을 알게 되었습니다.저는 그것이 그렇게 하지 않기를.나는 되고 싶다.~내 하드 드라이브의 다른 곳에 있습니다.인증서 설치, SSH 키 등 다른 작업을 수행할 때 기본값이 해당 네트워크 디렉토리를 자동으로 사용하지 않도록 하고 싶습니다.

저는 모든 곳을 찾아봤지만, 제가 찾을 수 있는 것은 가명, 리디렉션, $HOME이 가리키는 위치와 관련된 답변들뿐입니다.하지만 그것은 제가 원하는 것이 전혀 아닙니다.

문제는 이 디렉토리를 변경할 수 있느냐는 것입니다.만약 그렇다면: 어떻게?

업데이트: $HOME은 제가 수정해야 할 사항입니다.하지만 저는 이 신화적인 $HOME 변수가 어디에 설정되어 있는지 찾을 수 없어서 Linux 시스템 버전의 PATH나 뭐 그런 것이라고 추측했습니다.어쨌든...

는 아에 "프로파일있습다니일파이래▁under" 아래에 .git/etc $HOME 없음입니다.: ($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환경 변수는 당신이 요구하는 것을 정확하게 해결해주기 때문입니다.

cd ~루트 디렉터리를 변경하는 것이 아니라 사용자의 홈 디렉터리를 변경하는 것을 의미합니다.$HOME환경 변수입니다.

신속하고 더러운 해결책

C:\Program Files (x86)\Git\etc\profile 트세를 합니다.$HOME원하는 모든 항목에 대한 변수입니다(없는 경우 추가).좋은 장소는 예를 들어 다음과 같은 조건이 언급된 직후일 수 있습니다.# Set up USER's home directoryMinGW 형식이어야 합니다. 예:

HOME=/c/my/custom/home

Git Bash를 합니다.cd ~./c/my/custom/home지금이다.

사용자 프로필에 액세스하는 모든 항목은 네트워크 드라이브의 Windows 프로필 대신 이 디렉터리로 이동해야 합니다.

참조: C:\Program Files (x86)\Git\etc\profile에 여러를 사용하는▁the▁is다▁is좋니습▁set▁to▁it'것▁idea▁good모s▁machine를 설정하는 것이 좋습니다.$HOME동적:

HOME=/c/Users/$USERNAME

더 깨끗한 솔루션

합니다.HOME원하는 디렉토리로 이동합니다. 형식.c:\my\custom\home), 합니다.), Git Bash는 이 형식을 사용합니다.

컴퓨터의 모든 사용자에 대한디렉토리를 변경하려면 예를 들어 사용할 수 있는 시스템 환경 변수로 설정합니다.%USERNAME%변수를 사용하여 모든 사용자가 자신의 홈 디렉토리를 가질 수 있습니다. 예:

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

자신만을 위해디렉토리를 변경하려면 다른 사용자가 영향을 받지 않도록 홈 디렉토리를 사용자 환경 변수로 설정합니다.이 경우 전체 경로를 간단하게 하드 코딩할 수 있습니다.

HOME=c:\my\custom\home

이 경우 Windows에서 다음 사용자 변수를 추가하기만 하면 되었습니다.

이름: 변수이름:HOME
값: 변수 값:%USERPROFILE%

환경 변수 설정 방법(시스템 관리자가 아닌 경우 사용자 이름에 대한 사용자 변수 섹션을 사용할 수 있음)

Git뿐만 아니라 MSYS/MinGW에서도 작동하는 제가 한 일을 공유하겠습니다.

HOME환경 변수는 일반적으로 Windows 응용 프로그램에 대해 설정되지 않으므로 Windows를 통해 환경 변수를 생성해도 다른 영향은 없습니다.익스플로러에서 로 클릭하고> 및 -시스템을 합니다).Advanced system settings,그리고나서Environment Variables...그리고 새로운 것을 만듭니다.HOME원하는 곳에 할당할 수 있습니다.

새로운 환경변수를 만들 수 없다면 다른 답은 여전히 유효할 것입니다. (환경변수를 만드는 방법은 찾기가 너무 어렵기 때문에 자세히 살펴보았습니다.

수는대신하정전을 profile은 수있다니습생할을 수 ..bash_profile당신이 결석한 경우에는$HOME 디토리예):C:\Users\WhateverUser\.bash_profile의 내용은과 같습니다.

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

1 가기를 오른쪽 버튼으로 하여 Properties1을 합니다. Gitbash 바로 가기를 마우스 오른쪽 버튼으로 클릭하여 속성을 선택합니다.
" 가기"합니다. "바로 가기" 탭을 선택합니다.
3에 합니다. "시작" 필드에 시작 디렉토리를 입력합니다.
" 4에서합니다. "Target" 필드에서 "--cd-to-home" 부품을 제거합니다.

그래서 $HOME을 수정해야 합니다.하지만 저는 이 신화적인 $HOME 변수가 어디에 설정되어 있는지 찾을 수 없어서 Linux 시스템 버전의 PATH나 뭐 그런 것이라고 추측했습니다.어쨌든...**

정답.

HOME 의 맨 profile줄 세공된

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

저는 이것이 오래된 질문이라는 것을 알지만, 이것이 "gitbash home dir window"에 대한 최고의 구글 결과이기 때문에 제 연구 결과를 추가하기로 했습니다.

아무리 노력해도 네트워크 드라이브를 제외한 다른 곳에서 시작할 수 없었습니다. (U:) 이 경우 모든 작업에 응답하는 데 15-20초가 걸렸습니다. (VPN의 원격 직원, 국가 반대편에서 호스팅되는 네트워크 드라이브)

창에 HOME과 HOMEDIR 변수를 설정해 보았습니다.

git 설치의 setc/profile 파일에서 HOME과 HOMEDIR 변수를 설정해 보았습니다.

Git-bash 바로 가기에서 "시작"을 C:/user/myusername으로 편집하려고 했습니다.

git-interval 셸 내부의 "env" 명령은 올바른 c:/user/myusername을 표시합니다.하지만 Git-bash는 여전히 U:에서 시작됩니다.

궁극적으로 이 문제를 해결한 것은 Git-bash 바로 가기를 편집하고 대상 줄에서 "--cd-to-home"을 제거하는 것이었습니다.

Windows 10에서 최신 버전의 Git-for-Windows 2.22.0을 실행하고 있습니다.

그렇게,$HOME제가 수정해야 할 것입니다.

하지만 나는 이 신화적인 장소를 찾을 수 없었습니다.$HOME변수가 설정되어 있어서 Linux 시스템 버전의 PATH인지 뭔지 짐작했습니다.

Git 2.23(2019년 3분기)은 어떻게 하는지에 대해 매우 명확합니다.HOME설정됩니다.

카르스텐 kblees블리스()의 위원회 12a955(2019년 7월 4일)를 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- 커밋 fc613d2, 2019년 7월 19일)

mingw: 시작 시 HOME 초기화

HOME초기화는 역사적으로 다음과 같은 많은 다른 장소에서 복제되었습니다./etc/profile과 같은 git-bash.vbs그리고.gitk.cmd그리고 (약간 부서지기는 했지만)git-wrapper.

심지어 다음과 같은 관련이 없는 프로젝트도GitExtensions그리고.TortoiseGitGit를 직접 호출할 수 있으려면 동일한 논리를 구현해야 합니다.

화기HOMEGit 고유의 시작 코드를 사용하여 모든 중복 초기화 코드를 폐기할 수 있습니다.

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);
}

동일:$HOME위해서git bashWindows 10(윈도우 10)에서 네트워크 드라이브(느린 응답성)로 설정되었습니다.시스템 환경 변수, Git 프로필 등을 변경할 수 있는 권한이 없습니다.사용자를 위해 HOME 변수를 추가할 수 있습니다.

  • 시작 시 "환경" 검색
  • "시스템 환경 변수 편집"이 아닌 "계정 환경 변수 편집"으로 이동합니다.
  • "환경 변수" 창에서 "XYZXYZ용 사용자 변수" --> "새로 만들기"
  • "새 사용자 변수"에서 -->
    • "변수 이름:"을 "HOME"로 설정
    • "변수 값:"을 "C:"로 설정합니다.\사용자\XYZXYZ"(또는 필요한 항목)를 클릭합니다.
  • restart열기) (작닫/기기)git bash, 테스트, 편집ls ~

저는 정확히 같은 문제에 직면했습니다.홈 드라이브가 네트워크 드라이브에 매핑되었습니다.또한.

  1. 홈 드라이브에 쓰기 권한 없음
  2. Gitbash 프로파일에 대한 쓰기 액세스 권한 없음
  3. 제어판에서 환경 변수를 변경할 수 있는 관리자 권한이 없습니다.

하지만 는 하만아래명작서업저고수추있다었니습가할는지를 추가할 수.HOME환경 변수에 적용됩니다.

rundll32 sysdm.cpl,EditEnvironmentVariables

https://stackoverflow.com/a/32233667/4849403 이라는 답변을 바탕으로 저는 갑자기 유용하게 사용될 것이라고 보완하고 싶습니다.

우리 회사에는 GPO가 설치되어 있어서 어떤 변경을 하더라도 그룹 정책으로 대체될 것입니다.HOME 폴더(예: T:)는 모든 사용자에 대해 DFS 기반 네트워크 공유로 구성된 다음(대부분 가능), T: 드라이브 루트에 파일을 생성하도록 구성된 다음 저장소를 복제하거나 사용자 .gitconfg를 생성하려고 하면 오류가 발생합니다.git/etc/profile 파일에서 HOME 변수를 다음과 같이 재구성했습니다.

HOME=/c/users/${USERNAME}

또한 복제와 같은 작업을 수행하기 위해 Windows CMD에서 여전히 "HOME=T:/"이기 때문에 gitbash를 사용하기 때문입니다.

여기 있습니다.여기 있습니다. 시스템 복원 지점을 만듭니다.관리자 계정으로 로그온합니다.C: 폴더를 삭제합니다.\일부 사용자.폴더 c:\Users\SomeUser를 c:\SomeUser가 되도록 이동합니다.레지스트리 편집기를 엽니다.HKLM\SOFTWARE\Microsoft\로 이동합니다.Windows NT\CurrentVersion\ProfileList.c:\Users\SomeUser를 가리키는 것을 찾을 때까지 "ProfileImagePath"를 검색합니다.c:\SomeUser를 가리키도록 수정합니다.문제가 발생할 경우 시스템 복원을 사용합니다.

언급URL : https://stackoverflow.com/questions/32232978/change-the-location-of-the-directory-in-a-windows-install-of-git-bash

반응형