remove - git tag commit id
Cambiar la ubicación del directorio ~ en una instalación de Windows de Git Bash (10)
Entonces,
$HOME
es lo que necesito modificar.Sin embargo, no he podido encontrar dónde se establece esta mítica variable
$HOME
, así que supuse que era una versión de PATH del sistema Linux o algo así.
Git 2.23 (Q3 2019) es bastante explícito sobre cómo se configura
HOME
.
Ver
commit e12a955
(04 Jul 2019) por
Karsten Blees (
kblees
)
.
(Fusionada por
Junio C Hamano -
gitster
-
en
commit fc613d2
, 19 jul 2019)
mingw: inicializar HOME al inicio
HOME
inicialización deHOME
se duplicó históricamente en muchos lugares diferentes, incluidos/etc/profile
, scripts de lanzamiento comogit-bash.vbs
ygitk.cmd
y (aunque ligeramente roto) en elgit-wrapper
.Incluso los proyectos no relacionados como
GitExtensions
yTortoiseGit
necesitan implementar la misma lógica para poder llamar a git directamente.Inicialice
HOME
en el propio código de inicio de Git para que eventualmente podamos retirar todo el código de inicialización duplicado.
Ahora, mingw.c incluye el siguiente código:
/* 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); }
Ni siquiera estoy seguro de hacer la pregunta correcta. Déjame explicarte mi situación:
Esto se trata de Git en Windows 7.
Mi empresa configura el directorio de usuarios de Windows en una unidad de red, no en el disco duro local (para copias de seguridad y otros fines más allá del alcance de esta pregunta). No puedo cambiar esa política.
Sin embargo, PUEDO tener archivos locales fuera de ese esquema y así es como está configurado mi servidor Apache. Completamente local.
Instalé Git.
Instala Bash.
Cuando enciendo Bash y
cd ~
(cambio al directorio raíz) encuentro que (la raíz Bash) apunta a mi directorio de usuario de red.
Quiero que no haga eso.
Quiero
~
estar en otra parte de mi disco duro.
Lo quiero para que cuando realice otras operaciones, como instalar un certificado, una clave SSH, etc., sus valores predeterminados no usen automáticamente ese directorio de red.
He buscado en vano en todas partes, y todo lo que puedo encontrar se refiere a respuestas que implican alias, redireccionamiento y la ubicación a la que apunta $ HOME. Pero eso no es lo que quiero en absoluto.
La pregunta es: ¿puedo cambiar ese directorio? Y si es así: ¿cómo?
ACTUALIZACIÓN: Entonces, $ HOME es lo que necesito modificar. Sin embargo, no he podido encontrar dónde se establece esta mítica variable $ HOME, así que supuse que era una versión de PATH del sistema Linux o algo así. Como sea ...
Tengo un archivo de "perfil" en
git/etc
Aquí están los contenidos (aviso no $ 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.Haga clic derecho en el acceso directo de Gitbash, seleccione Propiedades
2. Elija la pestaña "Atajo"
3. Escriba su directorio de inicio en el campo "Iniciar en"
4.Retire la parte "--cd-to-home" del campo "Target"
Aquí tienes: Aquí tienes: crea un punto de restauración del sistema. Inicie sesión con una cuenta de administrador. Elimine la carpeta C: / SomeUser. Mueva la carpeta c: / Users / SomeUser para que se convierta en c: / SomeUser. Abre el editor de registro. Navegue a HKLM / SOFTWARE / Microsoft / Windows NT / CurrentVersion / ProfileList. Busque "ProfileImagePath" hasta encontrar el que apunta a c: / Users / SomeUser. Modifíquelo para que apunte a c: / SomeUser. Utilice Restaurar sistema en caso de que las cosas salgan mal.
En lugar de modificar el
profile
global, puede crear el
.bash_profile
en su directorio
$HOME
predeterminado (por ejemplo,
C:/Users/WhateverUser/.bash_profile
) con el siguiente contenido:
export HOME="C:/my/projects/dir"
cd "$HOME" # if you''d like it to be the starting dir of the git shell
En mi caso, todo lo que tenía que hacer era agregar la siguiente variable de usuario en Windows:
Nombre de la variable:
HOME
Valor variable:
%USERPROFILE%
Cómo establecer una variable de entorno (puede usar la sección Variables de usuario para nombre de usuario si no es administrador del sistema)
Entonces, $ HOME es lo que necesito modificar. Sin embargo, no he podido encontrar dónde se establece esta mítica variable $ HOME, así que supuse que era una versión de PATH del sistema Linux o algo así. De todos modos ... **
Responder
Agregar HOME en la parte superior del archivo de
profile
funcionó.
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
Me enfrenté exactamente al mismo problema. Mi unidad de inicio asignada a una unidad de red. también
- Sin acceso de escritura a la unidad de inicio
- Sin acceso de escritura al perfil de Git bash
- No hay derechos de administrador para cambiar las variables de entorno desde el panel de control.
Sin embargo, a continuación funcionó desde la línea de comandos y pude agregar
HOME
a las variables de entorno.
rundll32 sysdm.cpl,EditEnvironmentVariables
No entiendo por qué no desea establecer la variable de entorno
$HOME
ya que eso resuelve exactamente lo que está pidiendo.
cd ~
no significa
cambiar al directorio raíz
, sino
cambiar al directorio de inicio del usuario
, que se establece mediante la variable de entorno
$HOME
.
Solución rápida y sucia
Edite
C:/Program Files (x86)/Git/etc/profile
y configure la variable
$HOME
a lo que desee (agréguelo si no está allí).
Un buen lugar podría ser, por ejemplo, justo después de una condición comentada por
# Set up USER''s home directory
.
Debe estar en formato MinGW, por ejemplo:
HOME=/c/my/custom/home
Guárdelo, abra Git Bash y ejecute
cd ~
.
Debería estar en un directorio
/c/my/custom/home
ahora.
Todo lo que acceda al perfil del usuario debe ir a este directorio en lugar del perfil de su Windows en una unidad de red.
Nota:
C:/Program Files (x86)/Git/etc/profile
es compartido por todos los usuarios, por lo que si la máquina es utilizada por múltiples usuarios, es una buena idea configurar dinámicamente
$HOME
:
HOME=/c/Users/$USERNAME
Solución más limpia
Establezca una variable de entorno
HOME
en Windows para lo que desee.
En este caso, debe configurarlo en el formato de ruta de Windows (por ejemplo,
c:/my/custom/home
), Git Bash lo cargará y lo convertirá a su formato.
Si desea
cambiar el directorio de inicio para todos los usuarios en su máquina
, configúrelo como una
variable de entorno del sistema
, donde puede usar, por ejemplo, la variable
%USERNAME%
para que cada usuario tenga su propio directorio de inicio, por ejemplo:
HOME=c:/custom/home/%USERNAME%
Si desea cambiar el directorio de inicio solo para usted , configúrelo como una variable de entorno de usuario , para que otros usuarios no se vean afectados. En este caso, simplemente puede codificar la ruta completa:
HOME=c:/my/custom/home
Sé que esta es una vieja pregunta, pero es el principal resultado de Google para "gitbash homedir windows", así que pensé en agregar mis hallazgos.
No importa lo que intenté, no pude hacer que git-bash se iniciara en otro lugar que no fuera mi unidad de red, (U :) en mi caso, haciendo que cada operación tarde entre 15 y 20 segundos en responder. (Empleado remoto en VPN, unidad de red alojada en el otro lado del país)
Traté de configurar las variables HOME y HOMEDIR en Windows.
Intenté configurar las variables HOME y HOMEDIR en el archivo git installation''setc / profile.
Intenté editar el "Inicio en" en el acceso directo de git-bash para que sea C: / user / myusername.
El comando "env" dentro del shell git-bash mostraría c: / user / myusername correcto. Pero git-bash todavía comenzaría en U:
Lo que finalmente lo arregló para mí fue editar el acceso directo de git-bash y eliminar el "--cd-to-home" de la línea Target.
Estoy en Windows 10 ejecutando la última versión de Git-for-windows 2.22.0.
Veo que esta pregunta ya está respondida, pero estoy en una situación similar y pensé en compartir lo que hice. Originalmente hice esto, no para Git, sino para MSYS / MinGW.
La variable de entorno
HOME
normalmente no está configurada para las aplicaciones de Windows, por lo que crearla a través de Windows no afectó a nada que no quisiera afectar.
Desde las Propiedades de la computadora (haga clic con el botón derecho en Computadora, o como se llame) en el Explorador y seleccione Propiedades, o Panel de control -> Sistema y seguridad -> Sistema), elija
Advanced system settings
, luego
Evironment Variables...
Advanced system settings
Evironment Variables...
y cree uno nuevo,
HOME
, y asígnelo donde quiera.
Si no puede crear nuevas variables de entorno, la otra respuesta seguirá funcionando. (Revisé los detalles de cómo crear variables de entorno precisamente porque es muy difícil de encontrar).