web-dev-qa-db-ja.com

CygwinがWindowsホームで起動しているため、Cygwin.bashrcがソースではありません

注:問題の最新情報については、以下の2回目の編集をご覧ください。

Cygwinは先週まで私のためにうまく働いていました。現在、.bashrcはソースされていません。何かをインストールしたか、何かを変更したに違いありませんが、問題の原因を正確に思い出せません。 Cygwinを起動すると、Windowsのホームにいて、エイリアスが機能しません。手動で.bashrcを入手する必要があります。以下は私のCygwin.batです:

@echo off

C:
chdir C:\cygwin\bin

set CYGWIN=tty notitle glob

bash --login -i

何か案は?

編集:私の.bash_profileには次のものが含まれています、

# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi

EDIT2:重要! Cygwinを起動すると、Windowsのホームフォルダーから起動します。 .bash_profileと.bashrcをこのフォルダーに入れてみましたが、正しくソースされていました。これは、Cygwinが通常のCygwinホームフォルダーではなくWindowsホームフォルダーで起動する理由を理解することで問題が軽減されたことを意味します。

EDIT3:grep Gulshan/etc/passwd /を実行した結果

$ grep Gulshan /etc/passwd
Administrator:unused:500:513:U-Gulshan-HP\Administrator,S-1-5-21-1235613160-4193452482-2032876723-500:/home/Administrator:/bin/bash
Guest:unused:501:513:U-Gulshan-HP\Guest,S-1-5-21-1235613160-4193452482-2032876723-501:/home/Guest:/bin/bash
Gulshan:unused:1000:513:U-Gulshan-HP\Gulshan,S-1-5-21-1235613160-4193452482-2032876723-1000:/home/Gulshan:/bin/bash
9
gsingh2011

Cygwin FAQ は、$HOMEの設定方法を説明しています。

WindowsからCygwinを起動する場合、HOMEは優先度の高い順に次のように決定されます。

  • Windows環境からのHOME、POSIX形式に変換。
  • /etc/passwdのエントリ
  • /home/USERNAME

ネットワーク(telnet、ssh、...)からCygwinを使用する場合、HOME/etc/passwdから設定されます。

HOME/cygdrive/cなどの値に設定されている場合は、Windowsで設定されている可能性があります。 DOSコマンドウィンドウを起動し、set HOMEと入力して、これが当てはまるかどうかを確認します。

共有ドライブへのアクセスは、ネットワークから開始するときに制限されることが多いため、ドメインユーザーは、Windows環境(共有ドライブ上)と/etc/passwd(ローカルドライブ上)で異なるHOMEを使用したい場合があります。 sshは、HOMEを無視して、/etc/passwdのみを考慮することに注意してください。

私の推測では、/etc/passwdファイルを台無しにしたと思います。 (Windowsのホームディレクトリは%USERPROFILE%ではなく%HOME%です。)

grep USERNAME /etc/passwdは何を出力しますか(USERNAMEをユーザー名に置き換えます)?

9
Keith Thompson

ログインシェルをソースとする.profileまたは.bash_profileがあり、--loginを渡すと、ログインシェルが取得されます。 .profileをソースする場合、bashはnot source.bashrcになります。

私は入れようとします:

[ -f $HOME/.bashrc ] && source $HOME/.bashrc

.profileで、それが役立つかどうかを確認します。 .bashrcは、通常どおり、他の非ログインシェル呼び出しでソースされている必要があります。

そして、-iをbashに渡さないでください。あなたはそれを必要としません。コマンドラインで-iを指定したふりをするBashのようなハック。

1
Rich Homolka

私は同じ動作を経験しました-おそらくgit(Windows)をインストールした後です。

システム設定で、ユーザー変数HOME = C:\ Users\meを見つけ、これをHOME = D:\ homeにリセットしました。

1
user377223