
私は見たこれしかし、私の環境ではうまくいきません。私は Git のバージョンの bash ではなく、cygwin に付属しているバージョンを使用しているので、それが問題の一部になっている可能性があります。Console2 のタブの設定方法は次のとおりです。
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe --login -i
Startup dir: %HOMEDRIVE%%HOMEPATH%
これは私のレジストリエントリです:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%1"
bash は、クリックしているディレクトリではなく、常にホーム ディレクトリで起動します。その後、cd /cygdrive/d/code
... などを実行する必要があります。「起動ディレクトリ」フィールドの値を削除して、%1、%1% に変更してみましたが、うまくいきませんでした。
私も試してみましたこの解決策しかし、私にとってはうまくいきませんでした:
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe -l
レジストリ:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%V"
上記の解決策は、Git に含まれている bash.exe および sh.exe のバージョンでは機能しますが、何らかの理由で cygwin に含まれているバージョンでは機能しません。この理由はまだ調査中です。
編集
私は以下の回答を選択しましたが、.profile ファイルを正しいフォルダに作成していれば、上記の 2 番目の解決策が機能したと思います。cygwin が使用するホーム ディレクトリではなく、通常のホーム ディレクトリに作成しようとし続けたため、スクリプトが実行されませんでした。これにより、.profile ファイルは不要であると確信しました。私が選択した回答 (Hugh さん、ありがとうございます!) では、各スクリプト (.bash_profile、.bash_login、.profile、および .bashrc) が bash によってどのように使用されるかが明確に説明されており、それらを間違った場所に置いていたことが分かりました。
答え1
からマニュアル、
Bash が対話型ログイン シェルとして呼び出されるか、--login オプションを使用して非対話型シェルとして呼び出されると、まず /etc/profile ファイルが存在する場合はそこからコマンドを読み取って実行します。
/etc/profile
デフォルトでは次のコードが含まれます。
# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
unset CHERE_INVOKING
else
cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
fi
したがって、1 つの解決策は、bash を起動する前に環境変数を設定する Windows バッチ ファイルを作成することですCHERE_INVOKING
。これはあまりきれいではありません。
次、
そのファイルを読み取った後、~/.bash_profile、~/.bash_login、~/.profile をこの順序で探し、存在し読み取り可能な最初のファイルからコマンドを読み取って実行します。
これらのプロファイル スクリプトは、デフォルトで、~/.bashrc
スクリプトが存在する場合はそれを実行します。私の場合の作業cd -
の最後に次のコードを追加します.bashrc
(最新の Console2 と Cygwin bash を使用)。
echo 'cd -' >> ~/.bashrc
ちなみに、私は引数なしで Console2 ( Console.exe
) を呼び出します。Windows エクスプローラーは、右クリックしたディレクトリで起動することを保証します。私は XP を使用していますが、MS が Windows の以降のバージョンでこの動作を変更するとは思えません。また、Bash タブの「スタートアップ ディレクトリ」オプションは空白のままにしています。