Je ne suis même pas sûr de poser la bonne question. Laissez-moi vous expliquer ma situation:
Il s'agit de Git sur Windows 7.
Mon entreprise configure le répertoire des utilisateurs Windows sur un lecteur réseau, et non sur le disque dur local (à des fins de sauvegarde et à d'autres fins dépassant le cadre de cette question). Je ne peux pas changer cette politique.
Cependant, je PEUX avoir des fichiers locaux en dehors de ce schéma et c'est ainsi que mon serveur Apache est configuré. Entièrement local.
J'ai installé Git. Il installe Bash. Quand je lance Bash et cd ~
(passe dans le répertoire racine), je trouve qu'il (la racine Bash) pointe vers mon répertoire d'utilisateurs réseau. Je veux qu'il ne fasse pas ça. Je veux ~
être ailleurs sur mon disque dur. Je veux que lorsque j'effectue d'autres opérations telles que l'installation d'un certificat, d'une clé SSH, etc., ses valeurs par défaut n'utilisent pas automatiquement ce répertoire réseau.
J'ai cherché en vain partout, et tout ce que je peux trouver se réfère à des réponses qui impliquent des alias, des redirection et l'emplacement vers lequel pointe $ HOME. Mais ce n'est pas du tout ce que je veux.
La question est: puis-je modifier ce répertoire? Et si oui: comment?
MISE À JOUR: Donc, $ HOME est ce que je dois modifier. Cependant, je n'ai pas pu trouver où cette variable mythique $ HOME est définie, donc j'ai supposé qu'il s'agissait d'une version système Linux de PATH ou quelque chose. Bref ...
J'ai un fichier "profil" sous git/etc
. Voici le contenu (notez pas $ 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
~
représente votre répertoire personnel. La modification de laHOME
variable d'environnement changera sa destination.HOME
la variable d'environnement ne change pas seulement où~
pointe, mais aussi tout ce qui accède au répertoire personnel de l'utilisateur doit y aller.~
est juste un raccourci pour «répertoire personnel de l'utilisateur», donc partout où~
pointe, il y a le répertoire personnel de l'utilisateur.Réponses:
Je ne comprends pas pourquoi vous ne voulez pas définir la
$HOME
variable d'environnement car cela résout exactement ce que vous demandez.cd ~
ne signifie pas changer le répertoire racine , mais changer le répertoire personnel de l'utilisateur , qui est défini par la$HOME
variable d'environnement.Solution Quick'n'dirty
Modifiez
C:\Program Files (x86)\Git\etc\profile
et définissez la$HOME
variable comme vous le souhaitez (ajoutez-la si elle n'est pas là). Un bon endroit pourrait être par exemple juste après une condition commentée par# Set up USER's home directory
. Il doit être au format MinGW, par exemple:Enregistrez-le, ouvrez Git Bash et exécutez
cd ~
. Vous devriez être dans un répertoire/c/my/custom/home
maintenant.Tout ce qui accède au profil de l'utilisateur doit aller dans ce répertoire au lieu du profil de votre Windows sur un lecteur réseau.
Remarque:
C:\Program Files (x86)\Git\etc\profile
est partagé par tous les utilisateurs, donc si la machine est utilisée par plusieurs utilisateurs, c'est une bonne idée de définir$HOME
dynamiquement:Solution plus propre
Définissez la variable d'environnement
HOME
dans Windows sur le répertoire de votre choix. Dans ce cas, vous devez le définir au format de chemin Windows (avec des barres obliques inverses, par exemplec:\my\custom\home
), Git Bash le chargera et le convertira à son format.Si vous souhaitez modifier le répertoire de base de tous les utilisateurs de votre machine , définissez-le comme variable d'environnement système , où vous pouvez utiliser par exemple une
%USERNAME%
variable afin que chaque utilisateur ait son propre répertoire de base, par exemple:Si vous souhaitez modifier le répertoire personnel uniquement pour vous - même , définissez-le comme variable d'environnement utilisateur afin que les autres utilisateurs ne soient pas affectés. Dans ce cas, vous pouvez simplement coder en dur le chemin complet:
la source
profile
? Juste une note que le contenu de laHOME
variable doit ressembler à ceci en bash git:/c/some/path
.HOME="c://path/to/custom/root/"
Dans mon cas, tout ce que j'avais à faire était d'ajouter la variable User suivante sous Windows:
Nom de la
HOME
variable: Valeur de la variable:
%USERPROFILE%
Comment définir une variable d'environnement (vous pouvez utiliser la section Variables utilisateur pour le nom d'utilisateur si vous n'êtes pas un administrateur système)
la source
HOME=/c/Users/$USERNAME
au profil.Je partagerais ce que j'ai fait, qui fonctionne non seulement pour Git, mais aussi pour MSYS / MinGW.
La
HOME
variable d'environnement n'est normalement pas définie pour les applications Windows, donc sa création via Windows n'affecte rien d'autre. Depuis les propriétés de l'ordinateur (cliquez avec le bouton droit sur Ordinateur - ou quel que soit son nom - dans l'Explorateur, et sélectionnez Propriétés, ou Panneau de configuration -> Système et sécurité -> Système), choisissezAdvanced system settings
, puisEnvironment Variables...
créez-en un nouveauHOME
, et attribuez-le où vous voulez.Si vous ne pouvez pas créer de nouvelles variables d'environnement, l'autre réponse fonctionnera toujours. (J'ai passé en revue les détails de la création de variables d'environnement précisément parce qu'il est si difficile à trouver.)
la source
rundll32 sysdm.cpl,EditEnvironmentVariables
partir de l'invite de commande, ou taperenvironment
dans le menu Démarrer pour lancer la même commande.%USERPROFILE%
est une bonne valeur pour votre variable d'environnement HOME . Voir ma réponseHOME
(~
) plus près de l'/
arborescence racine . J'ai en fait créé un répertoireC:/home
et je l' utilise. En outre, BTW, le PO a noté que pour lui, le sien%USERPROFILE%
est sur un lecteur réseau et terriblement pénible à utiliser comme vous l'avez décrit.Au lieu de modifier le global,
profile
vous pouvez créer le.bash_profile
dans votre$HOME
répertoire par défaut (par exempleC:\Users\WhateverUser\.bash_profile
) avec le contenu suivant:la source
.bash_profile
est la bonne façon de personnaliser votre environnement, le piratage.profile
n'est pas une bonne pratique.~/.profile
est très bien. En fait, la documentation le préfère à~/.bash_profie
: "Les fichiers appropriés pour les variables d'environnement qui n'affectent qu'un utilisateur particulier (plutôt que le système dans son ensemble) sont ... ~ / .profile." Et: "Les fichiers de configuration du shell tels que ... ~ / .bash_profile ... sont souvent suggérés pour définir les variables d'environnement. Bien que cela puisse fonctionner sur les shells Bash pour les programmes démarrés à partir du shell, les variables définies dans ces fichiers ne sont pas disponibles par défaut aux programmes démarrés à partir de l'environnement graphique dans une session de bureau. " help.ubuntu.com/community/EnvironmentVariables1.Cliquez droit sur le raccourci Gitbash choisissez Propriétés
2.Choisissez l'onglet "Raccourci"
3. Tapez votre répertoire de départ dans le champ "Démarrer dans"
4.Supprimez la partie "--cd-to-home" du champ "Cible"
la source
$HOME
variableDonc, $ HOME est ce que je dois modifier. Cependant, je n'ai pas pu trouver où cette variable mythique $ HOME est définie, donc j'ai supposé qu'il s'agissait d'une version système Linux de PATH ou quelque chose. Bref ... **
Répondre
L'ajout de HOME en haut du
profile
fichier a fonctionné.HOME="c://path/to/custom/root/"
.la source
Git 2.23 (Q3 2019) est assez explicite sur la façon dont
HOME
est défini.Voir commit e12a955 (04 juil.2019 ) par Karsten Blees (
kblees
) .(Fusionné par Junio C Hamano -
gitster
- in commit fc613d2 , 19 juil.2019 )Maintenant, mingw.c inclut le code suivant:
la source
J'ai fait face exactement au même problème. Mon lecteur domestique est mappé sur un lecteur réseau. Aussi
Cependant, ci-dessous a fonctionné à partir de la ligne de commande et j'ai pu ajouter
HOME
des variables d'environnement.rundll32 sysdm.cpl,EditEnvironmentVariables
la source
Je sais que c'est une vieille question, mais c'est le meilleur résultat de google pour "gitbash homedir windows" alors j'ai pensé que j'ajouterais mes résultats.
Peu importe ce que j'ai essayé, je ne pouvais pas faire démarrer git-bash ailleurs que sur mon lecteur réseau, (U :) dans mon cas, chaque opération prend 15 à 20 secondes pour répondre. (Employé à distance sur VPN, lecteur réseau hébergé à l'autre bout du pays)
J'ai essayé de définir les variables HOME et HOMEDIR dans Windows.
J'ai essayé de définir les variables HOME et HOMEDIR dans le fichier etc / profile de l'installation de git.
J'ai essayé de modifier le "Démarrer dans" sur le raccourci git-bash pour qu'il soit C: / user / myusername.
La commande "env" dans le shell git-bash afficherait correctement c: / user / myusername. Mais git-bash commencerait toujours dans U:
Ce qui a finalement résolu le problème pour moi a été de modifier le raccourci git-bash et de supprimer le "--cd-to-home" de la ligne Target.
Je suis sous Windows 10 exécutant la dernière version de Git-for-windows 2.22.0.
la source
Ici vous allez: Ici vous allez: Créez un point de restauration système. Connectez-vous sous un compte administrateur. Supprimez le dossier C: \ SomeUser. Déplacez le dossier c: \ Users \ SomeUser pour qu'il devienne c: \ SomeUser. Ouvrez l'éditeur de registre. Accédez à HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList. Recherchez "ProfileImagePath" jusqu'à ce que vous trouviez celui qui pointe vers c: \ Users \ SomeUser. Modifiez-le pour qu'il pointe vers c: \ SomeUser. Utilisez la restauration du système en cas de problème.
la source