Git Bash'in Windows kurulumunda ~ dizininin konumunu değiştirme


138

Doğru soruyu sorduğumdan bile emin değilim. Durumumu açıklayayım:

Bu, Windows 7'deki Git ile ilgili.

Şirketim Windows kullanıcı dizinini yerel sabit sürücüde değil, ağ sürücüsünde kurar (yedekleme ve bu sorunun kapsamı dışındaki diğer amaçlar için). Bu politikayı değiştiremem.

Ancak bu düzeni dışında yerel dosyaları olabilir ve Apache sunucum bu şekilde ayarlanır. Tamamen yerel.

Git'i yükledim. Bash'i kurar. Bash'i ateşlediğimde ve cd ~(kök dizini değiştirdiğimde) bunun (Bash kökü) ağ kullanıcı dizinimi gösterdiğini görüyorum. Bunu yapmamasını istiyorum. İstediğim ~yerde benim sabit sürücüsünde olmak. Sertifika, SSH anahtarı vb.Gibi diğer işlemleri gerçekleştirdiğimde, varsayılanları otomatik olarak bu ağ dizinini kullanmayacak şekilde istiyorum.

Her yerde boşuna arama yaptım ve tüm bulabildiğim, takma adlar, yönlendirme ve $ HOME'un işaret ettiği konumu içeren cevaplara atıfta bulunuyor. Ama istediğim bu değil.

Soru şu: Bu dizini değiştirebilir miyim? Ve eğer öyleyse: Nasıl?

GÜNCELLEME: Yani, $ HOME değiştirmem gereken şey. Ancak bu efsanevi $ HOME değişkeninin nerede ayarlandığını bulamadım, bu yüzden PATH'nin Linux sistem sürümü veya başka bir şey olduğunu varsaydım. neyse ...

Altında bir "profil" dosyam var git/etc. İşte içeriği (not $ $ 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

~ana dizininizi temsil eder. Değişen HOMEnereye gittiğini değişecek ortam değişkeni.

Sadece bir not: HOMEortam değişkeni sadece nereye ~işaret ettiğini değiştirmez , aynı zamanda kullanıcının ana dizinine erişen her şeyin oraya gitmesini sağlar.
David Ferenczy Rogožan

~"kullanıcının ana dizini" için sadece bir kısayoldur, dolayısıyla nerede ~işaret ederlerse kullansın ana dizini vardır.
David Ferenczy Rogožan

Evet, bu $ HOME değişkenini ayarlamak için bulamıyorum. Yukarıda profil dosyamın neye benzediğini ekledim.
PEWColina

Görüyorum, muhtemelen Git'in farklı bir versiyonuna sahipsiniz. Hangi versiyona sahipsin? BTW, profilin sonuna HOME ayarını eklemeyi deneyin. Ancak başka bir yere yazılması mümkündür.
David Ferenczy Rogožan

Yanıtlar:


140

Anlamıyorum, neden $HOMEortam değişkenini ayarlamak istemiyorsunuz çünkü bu tam olarak istediğinizi çözüyor.

cd ~kök dizinde değişiklik anlamına gelmez , ancak ortam değişkeni tarafından ayarlanan kullanıcının giriş dizininde değişiklik anlamına gelir $HOME.

Quick'n'dirty çözümü

Düzen C:\Program Files (x86)\Git\etc\profileve set $HOMEsize (orada değilse ekleyin) istersen değişken. İyi bir yer, örneğin yorumladığı bir koşuldan hemen sonra olabilir # Set up USER's home directory. MinGW biçiminde olmalıdır, örneğin:

HOME=/c/my/custom/home

Kaydedin, Git Bash'i açın ve çalıştırın cd ~. /c/my/custom/homeŞimdi bir dizinde olmalısınız .

Kullanıcının profiline erişen her şey, bir ağ sürücüsündeki Windows profiliniz yerine bu dizine girmelidir.

Not: C:\Program Files (x86)\Git\etc\profile tüm kullanıcılar tarafından paylaşılır, bu nedenle makine birden fazla kullanıcı tarafından kullanılıyorsa, $HOMEdinamik olarak ayarlamak iyi bir fikirdir :

HOME=/c/Users/$USERNAME

Daha temiz çözüm

HOMEWindows'taki ortam değişkenini istediğiniz dizine ayarlayın . Bu durumda, Windows yol biçiminde (ters eğik çizgilerle c:\my\custom\home) ayarlamanız gerekir , Git Bash onu yükler ve biçimine dönüştürür.

Makinenizdeki tüm kullanıcılar için giriş dizinini değiştirmek istiyorsanız , bunu sistem ortam değişkeni olarak ayarlayın ; burada %USERNAME%her değişkenin kendi giriş dizini olması için örneğin değişkeni kullanabilirsiniz :

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

Giriş dizinini sadece kendiniz değiştirmek istiyorsanız , kullanıcı ortamı değişkeni olarak ayarlayın , böylece diğer kullanıcılar etkilenmez. Bu durumda, tüm yolu sabit olarak kodlayabilirsiniz:

HOME=c:\my\custom\home

3
Teşekkürler, profil dosyamda $ HOME değişkeni bulamıyorum. Soruya ekledim. Lütfen bir bak. belki bu değişken için başka bir yere bakmam gerekiyor?
PEWColina

1
Dizinin tamamında başka hiçbir dosya $ HOME çağırmıyor / ayarlamıyor.
PEWColina

1
Yani herhangi bir yere eklemeye çalıştınız mı? Örneğin profile? HOMEDeğişken içeriğinin git-bash: ifadesinde şöyle görünmesi gerektiğini unutmayın /c/some/path.
David Ferenczy Rogožan

6
profil dosyasının üstüne HOME ekleyerek çalıştı. HOME="c://path/to/custom/root/"
PEWColina

3
'
Home

43

Benim durumumda, tek yapmam gereken Windows'ta aşağıdaki Kullanıcı değişkenini eklemekti :

Değişken adı: HOME
Değişken değeri:%USERPROFILE%

Ortam Değişkeni nasıl ayarlanır ( Sistem yöneticisi değilseniz kullanıcı adı için Kullanıcı değişkenleri bölümünü kullanabilirsiniz )


3
Bu benim için mükemmel çalıştı ve kabul edilen cevaba IMO için daha iyi bir çözüm.
dan_g

2
Bu cevap en üste çıkmalıdır.
user4015990

1
Bu, aynı makinede birden fazla kullanıcı kullanırken işe yaradı, ancak işe yaramadı. HOME=/c/Users/$USERNAMEProfile ekleyerek gitmek zorunda kaldım .
gonzo

3
Bu en iyi cevap olmalı. GitBash'i Windows kullanıcı klasörümdeki (C: \ Users \ KullanıcıAdı) .ssh dizinini kullanmanın tek yolu (bulabildiğim tek yol). Sistemimde varsayılan olarak% HOMEDRIVE% (M :) idi. Ve tabii ki hala çalışacak ve GitBash'e güncelleyecek!
YanisTheYak

1
Bu, $ HOME değişkeniniz ayarlanmamışsa çalışır, ancak OP'nin şirket politikasına göre $ HOME ayarlanmış gibi görünür. Benim de onun problemi var. Bu yanıt bu durumda işe yaramaz (yeni ayarın şirket politikası tarafından otomatik olarak üzerine yazılır).
13'te bitsmack

38

Yaptığımı paylaştım, bu sadece Git için değil, MSYS / MinGW için de geçerli.

HOMEWindows üzerinden oluşturduktan başka bir şey etkilemedi bu yüzden ortam değişkeni normal Windows uygulamaları için ayarlanmamış. Bilgisayar Özellikleri'nden (Bilgisayar'a - veya adlandırılmış herhangi bir şeye - sağ tıklayın) Gezgin'de Özellikler'i veya Denetim Masası -> Sistem ve Güvenlik -> Sistem'i seçin Advanced system settings, ardından Environment Variables...yeni bir tane seçin,HOME ve atayın nereyi istersen.

Yeni ortam değişkenleri oluşturamıyorsanız, diğer yanıt yine de çalışır. (Bulmak çok zor olduğu için ortam değişkenlerinin nasıl oluşturulacağının ayrıntılarını inceledim.)


4
Ortamı kontrol panelinden değiştirmek için yönetici erişiminiz yoksa rundll32 sysdm.cpl,EditEnvironmentVariables , komut isteminden aşağıdaki komutu vermeniz veya environmentaynı komutu başlatmak için başlat menüsüne yazmanız gerekir.
Chris Chiasson

2
Bu git-bash için ana dizini ayarlamak için benim için çalıştı. Windows'ta HOME ortam değişkenini ayarlamanın doğru olduğundan emin olmanız ve bunun nasıl yapılacağı hakkında ayrıntılı talimatlar için teşekkür ederiz. Hedefime ulaşmak için basit bir değişiklik.
Stephen Hosking

%USERPROFILE%HOME ortam değişkeniniz için iyi bir değerdir . Cevabımı gör
EliandroRibeiro

@EliandroRibeiro Bu bir olasılıktır ve ihtiyaçlarınıza bağlı olarak iyi bir fikir olabilir. Ben şahsen, özellikle did not şekilde ithat bunu yapmak için. Kısmen Windows ve Unix benzeri ortamları ayrı tutmak (dağınıklığı önlemek için) ve kısmen HOME( ~) öğemi kök /ağacına daha yakın tutmak . Aslında bir dizin oluşturdum C:/homeve kullanıyorum. Ayrıca BTW, OP onun %USERPROFILE%için bir ağ sürücüsünde olduğunu ve tarif ettiğiniz gibi kullanmak için çok acı verici olduğunu kaydetti.
Menachem

1
Evet Menachem, kesin olduğunuzu takdir ediyorum, ama elde etmek istediğim sadece süreç ayrıntılarını değil, sonuçta Stephen Hosking ve ben de dahil olmak üzere birçok kişi tarafından onaylanan sonucu vurgulamaktı. Yani, benim için sonuç önemli, diğeri daha dikkat dağıtıcı. Umarım senin için sorun olmaz.
xpt

21

Bunun yerine, küresel değiştirme profileyaratabileceğin .bash_profilevarsayılan içinde $HOMEdizine (örn C:\Users\WhateverUser\.bash_profileaşağıdaki içeriği ile):

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

Evet! .bash_profileortamınızı özelleştirmek için doğru yoldur, kesmek .profileiyi bir uygulama değildir.
Roblogic

1
@ropata "hack" ~/.profilegayet iyi. Aslında dokümanlar bunu tercih ediyor ~/.bash_profie: "Yalnızca belirli bir kullanıcıyı (bir bütün olarak sistem yerine) etkileyen ortam değişkenleri için uygun dosyalar ... ~ / .profile." Ve: "Ortam değişkenlerini ayarlamak için genellikle ... ~ / .bash_profile ... gibi kabuk yapılandırma dosyaları önerilir. Bu, kabuktan başlatılan programlar için Bash kabuklarında çalışsa da, bu dosyalarda ayarlanan değişkenler varsayılan olarak kullanılamaz bir masaüstü oturumunda grafik ortamından başlayan programlara. " Değişkenler
Hawkeye Parker

7

GitBash kısayoluna sağ tıklayın 1. Özellikler'i seçin
2. "Kısayol" sekmesini seçin
3. Başlangıç ​​dizininizi
"Hedef" alanından "Başlat" alanına yazın 4. "Hedef" alanından cd-to-home "bölümüne yazın


5
aslında $HOMEdeğişkeni değiştirmez
roblogic

1
Windows'un hangi sürümü? Windows 10'da Özellikler almak mümkün görünmüyor
Peter Mortensen

@PeterMortensen Gitbash SHORTCUT seçmek için sağ tıklayın Özellikler
Özgür Öztürk

4

Yani, $ HOME değiştirmem gereken şey. Ancak bu efsanevi $ HOME değişkeninin nerede ayarlandığını bulamadım, bu yüzden PATH'nin Linux sistem sürümü veya başka bir şey olduğunu varsaydım. Her neyse ... **

Cevap

profileDosyanın üst kısmına HOME eklemek işe yaradı.

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

Yani, $HOMEdeğiştirmem gereken şey bu.

Ancak bu efsanevi $HOMEdeğişkenin nerede ayarlandığını bulamadım, bu yüzden PATH'nin Linux sistem versiyonu ya da başka bir şey olduğunu varsaydım.

Git 2.23 (3Ç 2019), HOME belirlendiğine .

Bkz . Karsten Blees ( ) tarafından taahhüt edilen e12a955 (04 Temmuz 2019 ) .kblees
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde fc613d2 tamamlama 2019 Temmuz 19)

mingw: başlangıçta HOME'u başlat

HOMEbaşlatma, ve gibi ve (biraz kırılmış olsa da) /etc/profilebaşlatma komut dosyaları da dahil olmak üzere birçok farklı yerde tarihsel olarak çoğaltılmıştır.git-bash.vbsgitk.cmdgit-wrapper .

Gibi bile ilgisiz projeler GitExtensionsveTortoiseGitGit'i doğrudan arayabilmek için aynı mantığı uygulamak ihtiyaç .

HOMETüm yinelenen başlatma kodlarını kullanımdan kaldırabilmemiz için Git'in kendi başlatma kodunu başlatın .

Şimdi, mingw.c aşağıdaki kodu içerir:

/* 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

Aynı sorunla karşılaştım. Ev sürücüm bir ağ sürücüsüyle eşlendi. Ayrıca

  1. Ev sürücüsüne yazma erişimi yok
  2. Git bash profiline yazma erişimi yok
  3. Denetim masasından ortam değişkenlerini değiştirmek için yönetici hakları yoktur.

Ancak aşağıda komut satırından çalıştım ve HOMEortam değişkenlerine ekleyebildim .

rundll32 sysdm.cpl,EditEnvironmentVariables


Bu sadece ortam değişkeni editörüne erişmek için bir konsol kısayolu
Raúl Salinas-Monteagudo

-1

Bu eski bir soru olduğunu biliyorum, ama "gitbash homedir windows" için en iyi google sonucu bu yüzden bulgularımı eklemek istiyorum düşündüm.

Denediğim ne olursa olsun, ağ sürücümden başka bir yere git-bash'ı alamadım, (U :) benim durumumda her işlemi yanıtlamak 15-20 saniye sürüyor. (VPN'de uzaktan çalışan, ülkenin diğer tarafında barındırılan ağ sürücüsü)

Windows'da HOME ve HOMEDIR değişkenlerini ayarlamayı denedim.

Git Installation'setc / profile dosyasında HOME ve HOMEDIR değişkenlerini ayarlamayı denedim.

Git-bash kısayolundaki "Başlama Yeri" ni C: / user / myusername olarak düzenlemeyi denedim.

git-bash kabuğunun içindeki "env" komutu doğru c: / user / myusername komutunu gösterir. Ama git-bash hala U'da başlayacaktı:

Nihayetinde benim için sabitleyen, git-bash kısayolunu düzenlemek ve "--cd-to-home" öğesini Hedef satırından kaldırmaktı.

Windows 10 için Git-for-windows 2.22.0'ın en son sürümünü kullanıyorum.


1
Merhaba grsiepka - SO'ya ilk katkınız için teşekkür ederiz. Cevabınızı okumak (gözden geçiriyorum) dışarı atlayan şey, bir cevap kadar çok işe yaramadığı ve işe yaramadığının hepsinin işe yaramadığının bir açıklaması değil;). Bir cevap arayan ve bu soruyu bulan diğer kullanıcıları hayal edin - o zaman (kabul edilen) cevabının sorunlarının nasıl düzeltileceğini anlatmasını bekler / isterler. Bunu akılda tutarak iyi bir cevap yazılır. Cevabınızı düzenleyebilir ve kısaltabilir misiniz? Teşekkürler.
Carlo Wood

"Kabul edilen" cevapların hiçbiri benim için işe yaramadı. Ben ne yaptım gönderdim. Bu işe yaramazsa cevabımı kaldırmaktan çekinmeyin.
grsiepka

-6

İşte başlıyoruz: İşte başlıyoruz: Bir Sistem Geri Yükleme Noktası oluşturun. Bir yönetici hesabı altında oturum açın. C: \ SomeUser klasörünü silin. C: \ Users \ SomeUser klasörünü c: \ SomeUser olacak şekilde taşıyın. Kayıt defteri düzenleyicisini açın. HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList'e gidin. C: \ Users \ SomeUser öğesini gösteren kişiyi bulana kadar "ProfileImagePath" ifadesini arayın. C: \ SomeUser öğesini gösterecek şekilde değiştirin. Bir şeyler ters giderse Sistem Geri Yükleme'yi kullanın.


4
Bu, Windows kullanıcı profilini taşıyacaktır. Onun istediđini sanmýyorum.
David Ferenczy Rogožan

1
Ve büyük olasılıkla, kurumsal bir kurulum altında, bunun için izni olmayabilir.
Menachem
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.