XTerm.exe
セッションに固有のCygwin
に問題があり、BASH
設定ファイルが正しく読み込まれません。手始めにCygwinのXTerm.exeのデフォルトのBASHシェルやその他の非ログインシェルに〜/ .bashrcを読み込ませることはできますか?
、私.startxwinrc
は次のとおりです。
#!/bin/sh
xrdb -merge ~/.Xresources
xterm -geometry +0+60 -ls &
xterm -geometry +0-100 &
exec xclock
...と私の.Xresourcesです:
Xft*antialias: true
Xft*autohint: true
XTerm*background: white
XTerm*foreground: black
XTerm*cursorColor: orchid
XTerm*fullCursor: true
XTerm*reverseVideo: false
XTerm*geometry: 80x40
XTerm*scrollBar: true
XTerm*rightScrollBar: true
XTerm*scrollTtyOutput: off
XTerm*scrollKey: on
XTerm*reverseWrap: true
XTerm*saveLines: 10000
XTerm*faceName: BitStream Vera Sans Mono
XTerm*faceSize: 12
XTerm*toolBar: off
XTerm*VT100.Translations: #override\n\
<Key>BackSpace: string(0x7F)\n\
<Key>Delete: string("\033[3~")\n\
<Key>Home: string("\033[1~")\n\
<Key>End: string("\033[4~")\n\
<KeyPress>Prior : scroll-back(1,page)\n\
<KeyPress>Next : scroll-forw(1,page)
私は私のXサーバは、として起動します。
startxwin &
そしてI私は2つのXTerm
のウィンドウとxclock
(色とスクロールなどは私の仕様に従っています)。
しかし、私の~/.bashrc
コンフィギュレーションファイルでは、奇妙なことにターミナルプロンプトが設定されていません。
最初に私は私の問題は、これらの質問に関連していたと思った:
Why is my .bashrc not read under cygwin?
Cygwin shell doesn't execute .bashrc
...問題は、実際の構成設定が、おそらく~/.profile
または~/.bash_profile
、からロードされていることであることを示唆しています。しかし、これらを加えても何もしなかった。彼らは私が3つのbashの設定ファイルのそれぞれにこのような行を追加して実行している(.bashrc
、.bash_profile
、および.profile
)私のホームディレクトリにないし、確認するには
:
echo "**** EXECUTING /home/JasonMick/.bash_profile *****" | \
tee -a /tmp/shell.log
ファイルが書き込まれることはありません...明らかにこれらのファイルは決して触れられません。
次は、私のWindows環境変数(このような問題の原因となるものもあります)に "HOME"変数がないことを確認しました。そのような変数はなかったので、私はその点で大丈夫でした。
次私が使用して、シェルの状態に関するいくつかの基本的な事柄を検証... XTermのため
printf '%s\n' $SHELL $HOME $USER
結果は以下のとおりです。
/binに/ bashの
/ホーム/ JasonMick
JasonMick
これらの結果は、同じコマンドex X11
端末mintty
(通常はstartxwin
を起動するために使用します)に表示されます。しかし、私が新しいmintty
を開くと、私のホームディレクトリ.bashrc
ファイルの設定に従って、プロンプトが正しいことになります。
私は.profile
、.bashrc
、および.bash_profile
のファイルを/etc/
に検索しました。次のファイルが見つかりました:
/etc/profile
/etc/bash.bashrc
/etc/skel/.bashrc
/etc/skel/.bash_profile
/etc/defaults/etc/skel/.bashrc
/etc/defaults/etc/skel/.bash_profile
/etc/defaults/etc/bash.bashrc
/etc/defaults/etc/profile
私はそれらのすべてにプリントを追加しました。 minttyで
私は/etc/shell.logファイルには、次のコマンドを取得します:
**** EXECUTINGは/ etc/profile ****
**** EXECUTINGの/ etc/bashの/home/JasonMick/.bash_profileを実行するの.bashrc *****
**** *****
...それは最終的に.bash_profile
を呼び出し、/etc/
ファイルを呼び出すように見えるので、私のホームディレクトリには、/etc/
の設定ファイルがあります。
ログを削除すると、私はstartxwinを起動します。 Xtermが開きますが、ログファイルはありません!
これは、XTermがどのコンフィギュレーションファイルにも触れていないことを意味します。/etc/
ではなく、${HOME}
!
-bash himBH
... xtermはのように私が取得する場所:
私が見つけた唯一の違いは、mintty
でecho $0 $-
を呼び出すときに私が得ることである
bash himBH
の情報によると:
Difference between Login Shell and Non-Login Shell?
Why 'echo $0' gives different result for two different terminals?
Xtermの中に私のbashシェルは、非ログイン(ないインタラクティブ($-
でIフラグ)ではありません - $0
の正面に )BASH
シェル、私のmintty
はiteractive、ログインBASH
シェルです。
大丈夫です。上の2番目のリンクに基づいて私はまだログインしていないと思っています対話型シェルは〜/ .bashrcを読み込みます。しかし、上で述べたように、それはそのファイルをロードしているだけでなく、私が知る限り、どのbash設定ファイルもロードしていません。 ${HOME}
にはありません。/etc/
にはありません。
適切~/.bashrc
または~/.bash_profile
を調達するためにはCygwin(すなわちXTerm
デフォルトのシェルセッション)で非ログインシェルを強制的にどのように任意のアイデア?
何か間違っていますか?
私はあなたの助けに感謝しますが、この回答の編集について建設的な批判をしたいと思います。問題の**ログインしていない**シェルで正しく設定されていることを具体的に示しているので、 '$ {HOME} 'のテキストは多少無関係であると感じています。さらに、私のWindows環境変数。だからあなたが抱く問題は、実際には、私は既に質問文で言及していたし、明らかに私の展開には適用されませんでした。 –