[解決済み] Git BashのWindowsインストールで~ディレクトリの場所を変更する
質問
正しい質問をしているのかどうか、自分でもよくわかりません。私の状況を説明させてください。
Windows 7上のGitについてです。
私の会社では、Windowsのユーザーディレクトリをローカルのハードディスクではなく、ネットワークドライブに設定しています(この質問の範囲を超えたバックアップやその他の目的のため)。私はそのポリシーを変更することはできません。
しかし、そのスキーム以外のローカルファイルを持つことは可能で、私のApacheサーバーはそのようにセットアップされています。完全にローカルです。
Gitをインストールしました。Bashをインストールしました。Bashを起動すると
cd ~
(ルートディレクトリに変更する) それ (Bash ルート) は私のネットワークユーザーディレクトリを指していることがわかります。私はそれをしないようにしたい。私は
~
をハードディスク上の別の場所に置くようにします。証明書やSSHキーのインストールなど、他の操作を行うときに、デフォルトでそのネットワークディレクトリを自動的に使用しないようにしたいのです。
どこを探しても、エイリアスやリダイレクト、$HOMEが指す場所などの答えしか見つからず、無駄な検索をしてしまいました。しかし、それは私が欲しいものでは全くありません。
問題は、そのディレクトリを変更できるかということです。そして、もしそうなら、どのように?
UPDATE: つまり、$HOMEは私が変更する必要があるものです。しかし、この神話上の$HOME変数がどこに設定されているのか見つけられなかったので、Linuxシステム版の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
環境変数で解決できます。
cd ~
は意味しません。
ルートディレクトリに変更する
しかし
ユーザーのホームディレクトリに変更する
によって設定されます。
$HOME
環境変数
クイック&ダーティ・ソリューション
編集
C:\Program Files (x86)\Git\etc\profile
を設定し
$HOME
を好きなように設定します (ない場合は追加します)。例えば、次のような条件の直後に置くとよいでしょう。
# Set up USER's home directory
. 例えばMinGWのフォーマットでなければなりません。
HOME=/c/my/custom/home
保存して、Git Bash を開いて実行します。
cd ~
. ディレクトリにいるはずです。
/c/my/custom/home
今すぐ
ユーザーのプロファイルにアクセスするものはすべて、ネットワークドライブ上のWindowsのプロファイルではなく、このディレクトリに入るはずです。
注意
C:\Program Files (x86)\Git\etc\profile
はすべてのユーザーで共有されるため、複数のユーザーでマシンを使用する場合は
$HOME
を動的に実行します。
HOME=/c/Users/$USERNAME
よりクリーンなソリューション
環境変数を設定する
HOME
をWindowsの好きなディレクトリにコピーしてください。この場合、Windowsのパス形式(バックスラッシュ付き)で設定する必要があります。
c:\my\custom\home
を読み込むと、Git Bashがそのフォーマットに変換してくれます。
もし
あなたのマシンのすべてのユーザーのホームディレクトリを変更する
として設定します。
システム環境変数
を使用することができます。
%USERNAME%
変数を使用することで、例えば、各ユーザーが自分のホームディレクトリを持つことができます。
HOME=c:\custom\home\%USERNAME%
もし、あなたが ホームディレクトリを自分用に変更する として設定します。 ユーザー環境変数 そうすれば、他のユーザーが影響を受けることはないでしょう。この場合、単純にパス全体をハードコードすることができます。
HOME=c:\my\custom\home
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] ローカルの Git リポジトリが元々クローンされた URL を特定するにはどうすればよいですか。
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み] Windows での Git リポジトリのディレクトリを無視する
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Git リポジトリに空のディレクトリを追加するには?
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】以下の追跡されていないワーキングツリーファイルは、マージによって上書きされますが、私は気にしません。
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
[解決済み] ERROR: リモートレポ 'origin' のクローン作成に失敗しました。
-
[解決済み] 無効なVCSルートマッピング - 私のプロジェクトで3つのエラーが発生しました。
-
[解決済み] SourceTree error:1407742E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1警告プロトコルバージョン
-
[解決済み] GitBash | origin master - rejected (fetch first) | GitHub リポジトリにファイルがない。
-
[解決済み] 警告: リモート HEAD は存在しない参照元を参照しているため、チェックアウトできません。
-
[解決済み] Visual Studio Codeの統合ターミナルからWindowsのBashを使用するにはどうすればよいですか?
-
[解決済み】WindowsでGit Bashのデフォルトの場所を変更するにはどうすればいいですか?
-
[解決済み] Windowsで.gitconfigの場所を変更する