Git Bash के विंडोज इंस्टाल में ~ डायरेक्टरी का स्थान बदलें


138

मुझे यकीन भी नहीं है कि मैं सही सवाल पूछ रहा हूं। मुझे अपनी स्थिति स्पष्ट करने दें:

यह विंडोज 7 पर गिट के बारे में है।

मेरी कंपनी विंडोज उपयोगकर्ता निर्देशिका को नेटवर्क ड्राइव पर स्थापित करती है, स्थानीय हार्ड ड्राइव (बैकअप और इस प्रश्न के दायरे से परे अन्य उद्देश्यों के लिए) पर नहीं। मैं उस नीति को नहीं बदल सकता।

मेरे पास उस योजना के बाहर स्थानीय फ़ाइलें हो सकती हैं और यह कि मेरा Apache सर्वर कैसे सेट किया गया है। पूरी तरह से स्थानीय।

मैंने गिट स्थापित किया। यह बैश स्थापित करता है। जब मैं बैश और cd ~रूट निर्देशिका में परिवर्तन करता हूं तो मुझे लगता है कि यह (बैश रूट) मेरे नेटवर्क उपयोगकर्ता निर्देशिका को इंगित करता है। मैं चाहता हूं कि ऐसा न हो। मैं ~अपनी हार्ड ड्राइव पर कहीं और रहना चाहता हूं। मैं यह चाहता हूं ताकि जब मैं अन्य ऑपरेशन जैसे कि एक प्रमाण पत्र, एक एसएसएच कुंजी आदि स्थापित करूं, तो इसकी चूक स्वचालित रूप से नेटवर्क निर्देशिका का उपयोग नहीं करेगी।

मैंने हर जगह व्यर्थ खोज की है, और सभी मैं उन उत्तरों का उल्लेख कर सकता हूं जिनमें उपनाम, पुनर्निर्देशन, और स्थान $ HOME अंक शामिल हैं। लेकिन यह वह नहीं है जो मैं चाहता हूं।

सवाल यह है कि क्या मैं उस निर्देशिका को बदल सकता हूं? और अगर ऐसा है: कैसे?

अद्यतन: तो, $ HOME मुझे संशोधित करने की आवश्यकता है। हालाँकि, मुझे यह पता नहीं चल पाया है कि यह पौराणिक $ HOME चर कहाँ सेट है, इसलिए मैंने यह मान लिया कि यह 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पर्यावरण चर केवल ~बिंदुओं पर ही नहीं बदलता है, बल्कि उपयोगकर्ता के घर निर्देशिका तक पहुँचने के लिए जो कुछ भी है वह भी वहां जाना चाहिए।
डेविड फेरेंस्की रोगोजान

~"उपयोगकर्ता की होम निर्देशिका" के लिए केवल एक शॉर्टहैंड है, इसलिए जहां भी ~इंगित करता है, उपयोगकर्ता की होम निर्देशिका है।
डेविड फेरेंस्की रोगोजान

हाँ, मैं इसे सेट करने के लिए $ HOME चर नहीं पा सकता हूँ। ऊपर मैंने जोड़ा कि मेरी प्रोफ़ाइल फ़ाइल कैसी दिखती है।
PEWColina

मैं देखता हूं, आपके पास शायद Git का एक अलग संस्करण है। आपके पास क्या संस्करण है? BTW प्रोफ़ाइल के अंत में HOME की सेटिंग जोड़ने का प्रयास करें। लेकिन यह संभव है, कि यह कहीं और लिखा जाएगा।
डेविड फेरेंस्की रोगोजान

जवाबों:


140

मुझे समझ नहीं आ रहा है, कि आप $HOMEपर्यावरण चर को क्यों सेट नहीं करना चाहते हैं क्योंकि आप जो पूछ रहे हैं वह ठीक है।

cd ~रूट निर्देशिका में परिवर्तन का मतलब यह नहीं है , लेकिन उपयोगकर्ता के होम निर्देशिका में परिवर्तन , जो $HOMEपर्यावरण चर द्वारा निर्धारित किया गया है।

Quick'n'dirty समाधान

जो भी आप चाहते हैं उसे संपादित करें C:\Program Files (x86)\Git\etc\profileऔर सेट करें $HOME(यदि यह वहां नहीं है तो इसे जोड़ें)। एक अच्छी जगह उदाहरण के लिए एक टिप्पणी के बाद सही हो सकता है # Set up USER's home directory। यह उदाहरण के लिए, मिनगव प्रारूप में होना चाहिए:

HOME=/c/my/custom/home

इसे सहेजें, गेट बैश खोलें और निष्पादित करें cd ~। अब आप एक निर्देशिका में होना चाहिए /c/my/custom/home

नेटवर्क ड्राइव पर आपके विंडोज प्रोफाइल के बजाय उपयोगकर्ता की प्रोफ़ाइल तक पहुंचने वाली हर चीज को इस निर्देशिका में जाना चाहिए।

नोट: C:\Program Files (x86)\Git\etc\profile सभी उपयोगकर्ताओं द्वारा साझा किया जाता है, इसलिए यदि मशीन कई उपयोगकर्ताओं द्वारा उपयोग की जाती है, तो यह $HOMEगतिशील रूप से सेट करने के लिए एक अच्छा विचार है :

HOME=/c/Users/$USERNAME

क्लीनर समाधान

HOMEजो भी निर्देशिका आप चाहते हैं विंडोज में पर्यावरण चर सेट करें । इस स्थिति में, आपको इसे विंडोज पथ प्रारूप (बैकस्लैश के साथ, उदाहरण के लिए c:\my\custom\home) में सेट करना होगा, गिट बैश इसे लोड करेगा और इसे इसके प्रारूप में परिवर्तित करेगा।

यदि आप अपनी मशीन पर सभी उपयोगकर्ताओं के लिए होम निर्देशिका बदलना चाहते हैं , तो इसे सिस्टम वातावरण चर के रूप में सेट करें , जहां आप उदाहरण %USERNAME%चर के लिए उपयोग कर सकते हैं, इसलिए प्रत्येक उपयोगकर्ता के पास अपनी होम निर्देशिका होगी, उदाहरण के लिए:

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

यदि आप होम डायरेक्टरी को सिर्फ अपने लिए बदलना चाहते हैं , तो इसे एक उपयोगकर्ता पर्यावरण चर के रूप में सेट करें , ताकि अन्य उपयोगकर्ता प्रभावित न हों। इस मामले में, आप बस पूरे पथ को हार्ड-कोड कर सकते हैं:

HOME=c:\my\custom\home

3
धन्यवाद, मुझे अपनी प्रोफ़ाइल फ़ाइल में $ HOME चर नहीं मिल रहा है। मैंने प्रश्न में जोड़ा है। कृपया देख लीजिये। शायद मैं उस चर के लिए कहीं और देखने की जरूरत है?
PEWColina

1
संपूर्ण डायरेक्ट्री कॉल / सेट $ HOME में कोई अन्य फाइल नहीं है।
PEWColina

1
तो क्या आपने इसे कहीं भी जोड़ने की कोशिश की? नीचे के उदाहरण के लिए profile? बस ध्यान दें कि HOMEपरिवर्तनशील की सामग्री git-bash में इस तरह दिखनी चाहिए /c/some/path:।
डेविड फेरेंस्की रोगोजान

6
प्रोफ़ाइल फ़ाइल के शीर्ष पर HOME जोड़ने ने काम किया। HOME="c://path/to/custom/root/"
PEWColina

3
Git फोल्डर में प्रोफाइल फाइल को एडिट करने के बजाय 'होम' सिस्टम एनवायरनमेंट वेरिएबल को जोड़ने से समस्या हल हो गई
Firstpostcommenter

43

मेरे मामले में, मुझे केवल इतना करना था कि विंडोज पर निम्नलिखित उपयोगकर्ता चर जोड़ा जाए :

चर नाम: HOME
चर मान:%USERPROFILE%

एक पर्यावरण चर सेट करने के लिए कैसे करें ( यदि आप सिस्टम व्यवस्थापक नहीं हैं तो उपयोगकर्ता नाम अनुभाग के लिए उपयोगकर्ता चर का उपयोग कर सकते हैं )


3
यह मेरे लिए पूरी तरह से काम करता है, और स्वीकृत उत्तर के लिए एक बेहतर समाधान आईएमओ है।
dan_g

2
यह उत्तर शीर्ष पर जाना चाहिए।
user4015990

1
एक ही मशीन पर कई उपयोगकर्ताओं का उपयोग करने पर यह काम नहीं किया। मुझे HOME=/c/Users/$USERNAMEप्रोफाइल में जोड़कर जाना था ।
गोंजो

3
यह शीर्ष उत्तर होना चाहिए। GitBash को अपने विंडोज यूजर फोल्डर (C: \ Users \ UserName) में .ssh डायरेक्टरी का उपयोग करने के लिए यह एकमात्र तरीका (केवल एक ही तरीका है)। मेरे सिस्टम पर यह% HOMEDRIVE% (M :) के लिए डिफ़ॉल्ट था। और निश्चित रूप से यह अभी भी काम करेगा और GitBash को अपडेट करेगा!
यानिसिंक

1
यदि आपके पास कोई $ HOME वैरिएबल सेट नहीं है, तो यह काम करता है, लेकिन ऐसा लगता है कि OP ने $ HOME को कंपनी की नीति द्वारा निर्धारित किया है। मुझे भी उसकी समस्या है। यह जवाब उस मामले में काम नहीं करता है (नई सेटिंग कंपनी की नीति द्वारा स्वचालित रूप से अधिलेखित हो जाती है)।
बिटस्मैक

38

मैंने वह किया जो मैंने किया, जो न केवल गिट के लिए काम करता है, बल्कि MSYS / MinGW के रूप में भी काम करता है।

HOMEवातावरण चर सामान्य रूप से, विंडोज अनुप्रयोगों के लिए सेट नहीं है, तो विंडो के माध्यम से इसे बनाने को बिल्कुल भी प्रभावित नहीं किया। कंप्यूटर गुण से (कंप्यूटर पर राइट-क्लिक करें - या जो भी नाम दिया गया है - एक्सप्लोरर में, और गुण चुनें, या नियंत्रण कक्ष -> सिस्टम और सुरक्षा -> सिस्टम) Advanced system settings, फिर चुनें , Environment Variables...और एक नया बनाएं HOME, और इसे असाइन करें जहाँ भी आप पसंद करो।

यदि आप नए पर्यावरण चर नहीं बना सकते हैं, तो अन्य उत्तर अभी भी काम करेंगे। (मैं पर्यावरण चर बनाने के तरीके के विवरण के माध्यम से गया था क्योंकि यह खोजने के लिए बहुत भिन्न है।)


4
यदि आपके पास नियंत्रण कक्ष से पर्यावरण को बदलने के लिए व्यवस्थापक पहुंच नहीं है, तो आपको rundll32 sysdm.cpl,EditEnvironmentVariables कमांड प्रॉम्प्ट से निम्न कमांड जारी करने की आवश्यकता होगी , या environmentउसी कमांड को लॉन्च करने के लिए प्रारंभ मेनू में टाइप करें ।
क्रिस चियासन

2
यह मेरे लिए git-bash के लिए होम डायरेक्टरी सेट करने के लिए काम करता है। पुनः आश्वासन के लिए धन्यवाद कि विंडोज में होम एनवायरनमेंट वैरिएबल को सेट करना ठीक है, और यह भी करना है कि इसे कैसे करें, इस पर विस्तृत निर्देश। मेरा लक्ष्य पूरा करने के लिए एक साधारण बदलाव।
स्टीफन होकिंग

%USERPROFILE%आपके गृह परिवेश चर का एक अच्छा मूल्य है । मेरा जवाब देखें
एलियानड्रोइबिरो

@EliandroRibeiro यह एक संभावना है, और आपकी आवश्यकताओं के आधार पर, शायद एक अच्छा विचार है। अपने आप के लिए, मैं विशेष रूप से किया नहीं यह तरीका ithat क्या करना है। आंशिक रूप से विंडोज और यूनिक्स जैसे वातावरण को अलग रखने के लिए (अव्यवस्था से बचने के लिए), और आंशिक रूप से मेरे HOME( ~) रूट /पेड़ के करीब है । मैंने वास्तव में एक निर्देशिका बनाई C:/homeऔर उसका उपयोग किया। इसके अलावा, बीटीडब्ल्यू, ओपी ने उल्लेख किया कि उसके लिए, उसका %USERPROFILE%नेटवर्क ड्राइव पर है, और जैसा कि आप वर्णित हैं, इसका उपयोग करने के लिए भयानक रूप से दर्दनाक है।
मेनकेम

1
हां मेनेचेम, मैं आपके सटीक होने की सराहना करता हूं, लेकिन मैं जो हासिल करना चाहता था वह प्रक्रिया विवरण मात्र था लेकिन परिणाम पर तनाव, जिसकी पुष्टि स्टीफन होसिंग और मेरे सहित कई लोगों ने की है। यानी, मेरे लिए अंतिम परिणाम मायने रखता है, अन्य विस्तृत अधिक व्याकुलता हैं। आशा है कि आपके साथ ठीक है।
21

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अच्छा अभ्यास नहीं है।
18:05

1
@ropata "हैकिंग" ~/.profileठीक है। वास्तव में, डॉक्स इसे अधिक पसंद करते हैं ~/.bash_profie: "पर्यावरण चर के लिए उपयुक्त फाइलें जो किसी विशेष उपयोगकर्ता को प्रभावित करती हैं (बल्कि पूरे सिस्टम के बजाय) ... ~ / / .profile हैं।" और: "शेल कॉन्फ़िग फाइल्स जैसे कि ... ~ / .bash_profile ... अक्सर पर्यावरण वैरिएबल सेट करने के लिए सुझाई जाती हैं। जबकि शेल से शुरू किए गए प्रोग्राम के लिए बैश शेल पर यह काम कर सकता है, उन फ़ाइलों में सेट किए गए वैरिएबल डिफ़ॉल्ट रूप से उपलब्ध नहीं हैं। डेस्कटॉप सत्र में चित्रमय वातावरण से शुरू होने वाले कार्यक्रम। " help.ubuntu.com/community/EnvironmentVariables
पार्कर

7

1. क्लिक करें Gitbash शॉर्टकट के लिए गुण चुनें
2. चुनें "शॉर्टकट" टैब 3.
अपनी आरंभिक निर्देशिका को "फ़ील्ड में प्रारंभ करें।
4. हटाएं" - "लक्ष्य" फ़ील्ड से एलसीडी-टू-होम भाग का चयन करें


5
वास्तव में परिवर्तन नहीं करता $HOMEचर
roblogic

1
विंडोज का क्या संस्करण? विंडोज 10 में प्रॉपर्टीज का मिलना संभव नहीं लगता ।
पीटर मोर्टेंसन

Gitbash शॉर्टकट को @PeterMortensen राइट क्लिक गुण का चयन करें
Ozgur Ozturk

4

इसलिए, $ HOME को मुझे संशोधित करने की आवश्यकता है। हालाँकि, मुझे यह पता नहीं चल पाया है कि यह पौराणिक $ HOME चर कहाँ सेट है, इसलिए मैंने यह मान लिया कि यह PATH का लिनक्स सिस्टम संस्करण है या कुछ और। वैसे भी ... **

उत्तर

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

2

इसलिए, $HOMEमुझे संशोधित करने की आवश्यकता है।

हालाँकि, मुझे यह पता नहीं चल पाया है कि यह पौराणिक $HOMEचर कहाँ स्थापित किया गया है, इसलिए मैंने यह मान लिया कि यह पाथ का लिनक्स सिस्टम संस्करण है या कुछ और।

Git 2.23 (Q3 2019) कैसे HOMEसेट किया गया है, इस पर काफी स्पष्ट है।

देखें प्रतिबद्ध e12a955 द्वारा (04 जुला 2019) कर्स्टन Blees ( kblees)
(द्वारा विलय Junio सी Hamano - gitster- में fc613d2 प्रतिबद्ध , 19 जुला 2019)

mingw: स्टार्टअप पर गृह प्रारंभ करें

HOMEइनिशियलाइज़ेशन को कई अलग-अलग जगहों पर ऐतिहासिक रूप से दोहराया गया, जिसमें /etc/profile, जैसे स्क्रिप्ट लॉन्च करना git-bash.vbsऔर gitk.cmd, और (हालांकि थोड़ा टूटा हुआ) शामिल था git-wrapper

यहां तक ​​कि असंबंधित परियोजनाएं जैसे कि GitExtensionsऔर TortoiseGitसीधे तर्क को लागू करने में सक्षम होने के लिए उसी तर्क को लागू करने की आवश्यकता है।

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

0

मैंने ठीक उसी मुद्दे का सामना किया। मेरा होम ड्राइव नेटवर्क ड्राइव पर मैप किया गया है। भी

  1. होम ड्राइव पर कोई लिखें
  2. Git bash प्रोफ़ाइल तक कोई लेखन नहीं
  3. नियंत्रण कक्ष से पर्यावरण चर बदलने के लिए कोई अधिकार नहीं।

हालाँकि नीचे कमांड लाइन से काम किया गया था और मैं HOMEपर्यावरण चर में जोड़ने में सक्षम था ।

rundll32 sysdm.cpl,EditEnvironmentVariables


यह पर्यावरण चर संपादक का उपयोग करने के लिए सिर्फ एक कंसोल शॉर्टकट है
राउल सालिनास-मोंटियागुडो

-1

मुझे पता है कि यह एक पुराना सवाल है, लेकिन यह "gitbash homedir विंडोज़" के लिए शीर्ष Google परिणाम है, इसलिए मुझे लगा कि मैं अपने निष्कर्ष जोड़ूंगा।

कोई फर्क नहीं पड़ता कि मैंने क्या कोशिश की मैं अपने नेटवर्क ड्राइव को कहीं भी शुरू करने के लिए गिट-बैश नहीं कर सकता था, (यू :) मेरे मामले में हर ऑपरेशन को जवाब देने में 15-20 सेकंड लगते हैं। (वीपीएन पर दूरस्थ कर्मचारी, देश के दूसरी तरफ नेटवर्क ड्राइव होस्ट किया गया)

मैंने विंडोज़ में होम और होममेड वैरिएबल सेट करने की कोशिश की।

मैंने git स्थापना के aetc / प्रोफाइल फ़ाइल में HOME और HOMEDIR चर सेट करने का प्रयास किया।

मैंने "स्टार्ट इन" को git-bash शॉर्टकट पर C: / user / myusername संपादित करने का प्रयास किया।

git-bash शेल के अंदर "env" कमांड सही c: / user / myusername दिखाएगा। लेकिन git-bash अभी भी U में शुरू होगा:

आखिरकार मेरे लिए यह तय किया गया था कि गिट-बैश शॉर्टकट को एडिट किया जा रहा है और टारगेट लाइन से "- एलसीडी-टू-होम" को हटा दिया गया है।

मैं विंडोज 10 पर Git-for-windows 2.22.0 का नवीनतम संस्करण चला रहा हूं।


1
हाय grsiepka - एसओ को अपने पहले योगदान के लिए धन्यवाद। आपके उत्तर को पढ़ना (मैं इसकी समीक्षा कर रहा हूं) क्या उछलता है कि यह एक उत्तर के साथ-साथ आपके द्वारा किए गए सभी प्रयासों का वर्णन नहीं है जो काम नहीं करता था;)। एक उत्तर की तलाश कर रहे और इस सवाल का पता लगाने वाले अन्य उपयोगकर्ताओं की कल्पना करें - फिर वे उम्मीद करते हैं कि (स्वीकार किए गए) उत्तर चाहते हैं कि वे अपनी समस्या को कैसे ठीक करें। एक अच्छा जवाब इसे ध्यान में रखकर लिखा गया है। क्या आप अपना उत्तर संपादित कर उसे छोटा बना सकते हैं? धन्यवाद।
कार्लो वुड

"स्वीकृत" उत्तरों में से किसी ने भी मेरे लिए काम नहीं किया। मैंने जो किया पोस्ट किया। यदि वह मददगार नहीं है तो मेरे जवाब को हटाने में संकोच न करें।
grsiepka

-6

यहां आप जाएं: यहां आप जाएं: एक सिस्टम रिस्टोर प्वाइंट बनाएं। एक व्यवस्थापक खाते के तहत लॉग ऑन करें। फ़ोल्डर हटाएं C: \ SomeUser। फ़ोल्डर c: \ Users \ SomeUser को स्थानांतरित करें ताकि वह c: \ SomeUser बन जाए। रजिस्ट्री संपादक खोलें। HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList पर नेविगेट करें। "ProfileImagePath" की खोज तब तक करें जब तक कि आपको c: \ Users \ SomeUser में से कोई एक बिंदु न मिल जाए। इसे संशोधित करें ताकि यह c: \ SomeUser पर इंगित हो। सिस्टम पुनर्स्थापना का उपयोग करें यदि चीजें गलत हो जाती हैं।


4
यह उसकी विंडोज यूजर प्रोफाइल को हिला देगा। मुझे नहीं लगता कि यही वह चाहता है।
डेविड फेरेंस्की रोगोजान 17

1
और संभवतः, एक कॉर्पोरेट सेटअप के तहत, उसके पास इसके लिए अनुमति नहीं हो सकती है।
मेनकेम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.