当前位置: 首页 > 知识库问答 >
问题:

在Git Bash的Windows安装中更改~目录的位置

常永怡
2023-03-14

我甚至不确定我问的问题是否正确。让我解释一下我的情况:

这是关于Windows ;7上的Git。

我的公司将Windows用户目录设置在网络驱动器上,而不是本地硬盘驱动器上(用于备份和超出本问题范围的其他目的)。我不能改变这个政策。

我确实在git/etc下有一个“profile”文件。以下是内容(通知编号$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

共有1个答案

曾珂
2023-03-14

我不明白为什么您不想设置$home环境变量,因为这正好解决了您所要求的问题。

CD~并不意味着更改根目录,而是更改用户的主目录,该目录由$home环境变量设置。

编辑C:\program Files(x86)\git\etc\profile并将$home变量设置为您想要的任何内容(如果没有,则添加它)。例如,一个好的位置可能是在#注释的条件之后,设置用户的主目录。它必须是MinGW格式,例如:

HOME=/c/my/custom/home

访问用户配置文件的所有内容都应该进入此目录,而不是网络驱动器上的Windows配置文件。

注意:C:\program Files(x86)\git\etc\profile由所有用户共享,因此如果机器由多个用户使用,最好动态设置$home:

HOME=/c/Users/$USERNAME

将Windows中的环境变量home设置为所需的任何目录。在这种情况下,您必须将它设置为Windows路径格式(使用反斜杠,例如C:\my\custom\home),Git Bash将加载它并将其转换为它的格式。

HOME=c:\custom\home\%USERNAME%
HOME=c:\my\custom\home
 类似资料:
  • 问题内容: Windows下是否有任何命令来检查活动的JRE安装目录(因为计算机可以安装多个JRE)。对于linux,相应的命令是 是否有Windows等效产品? 问题答案: 对我来说列出所有java exe的工作,但告诉您使用了哪个,从而告诉您jre(完整路径): 编辑:win7和java:

  • 在我的windows安装中包括,其中可执行。我可以从shell启动以及。我也希望在中安装新的可执行文件,但这似乎不可能实现。 如何更改全局安装路径?

  • 问题内容: 在我的Windows中,安装包括,可执行文件在哪里。我可以从shell以及上启动。我也希望安装新的可执行文件,但似乎无法实现。 设置和变量不会改变任何东西:默认情况下仍会安装东西。 如何更改全局安装路径? 问题答案: 您需要做的只是阅读文档。我不想立即启动我的Win笔记本,因此无法验证它,但您只应在配置文件中更改为。如果要为所有用户全局更改它,请编辑文件,否则请创建/编辑。 但是此更改

  • 问题内容: 我在Windows 7计算机上安装了python 3.5,该计算机没有任何其他python版本。 pip随附python 3.5安装。 我用pip安装库 它在以下位置安装了库: 但是像pycharm这样的IDE会出现在: 那是应该安装它的地方。 因此,IDE无法识别该库,因此我无法在IDE中获得任何帮助。 解决方法是将库复制到所需的文件夹中,并且可以正常工作,但是我想知道如何配置pip

  • 我是 Jenkins 的新手,我有以下问题 刚刚在MacOS Sierra(10.12.6)上安装了Jenkins2,并且在 /Users/Shared/Jenkins/下创建了一个新用户,但是当我尝试运行maven编译命令时,通过一个新的作业,我有以下错误: 我尝试手动运行该命令,得到了以下结果: 我该如何解决这个问题?我想我必须更改工作区权限,但我不知道该怎么做。 请帮忙!

  • 问题内容: 据我所知,泊坞窗映像在安装时即已安装。有没有办法更改此位置,例如更改为已安装的卷? 问题答案: 对于最新版本的Docker,您可以在中 (根据https://docs.docker.com/engine/reference/commandline/dockerd/#daemon- configuration- file )将参数的值设置为自定义路径。 对于较旧的版本,您可以在启动Doc