2016-04-28 14 views
0

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はのように私が取得する場所:

私が見つけた唯一の違いは、minttyecho $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シェル、私のminttyiteractiveログインBASHシェルです。

大丈夫です。上の2番目のリンクに基づいて私はまだログインしていないと思っています対話型シェルは〜/ .bashrcを読み込みます。しかし、上で述べたように、それはそのファイルをロードしているだけでなく、私が知る限り、どのbash設定ファイルもロードしていません。 ${HOME}にはありません。/etc/にはありません。

適切~/.bashrcまたは~/.bash_profileを調達するためにはCygwin(すなわちXTermデフォルトのシェルセッション)で非ログインシェルを強制的にどのように任意のアイデア?

何か間違っていますか?

答えて

0

私はCygwinに、私は私の.startxwinrcファイルにexport ENV=~/.bashrcを呼び出すことによって、その構成設定をロードするために非ログインシェルを得ることができることを発見しました。新しい.startxwinrcファイルは次のとおりです。

#!/bin/sh 
export ENV=~/.bashrc 
xrdb -merge ~/.Xresources 
xterm -geometry +0+60 -ls & 
xterm -geometry +0-100 & 
exec xclock 

xtermセッションとその子供たちを気正しく私の~/.bashrcを調達します。スレッド内

@Gilles Difference between Login Shell and Non-Login Shell?状態:既存のセッションにターミナルでシェルを起動すると

」(画面を、Xターミナル、Emacsのターミナルバッファ、別の内部シェル、...)、あなたがを取得インタラクティブ、非ログインシェル。そのシェルはbash/etc/zshrcとzshのため~/.zshrc/etc/csh.cshrcとCSHのため~/.cshrc、POSIX/XSI準拠のシェルのENV変数で示されるファイルとして呼び出さbashのための~/.bashrc(シェルの設定ファイルを読むかもしれませんsh$ENVと設定されている場合はダッシュ、ksh、bashなどが呼び出され、mkshなどの場合は)。 "私は、まず、第1節は~/.bashrc非ログインシェルのために自動的にロードされていることを示唆しているように見えた、という読み

。 2番目の句では、bashの設定ファイルの場所を設定するために変数ENVを定義できると記載されていますが、最初の句の言語は、これが常に必要なのか、私の知見に基づいて、既定のGUIファイルに、デフォルトのシェルの構成ファイルに対応するENV変数をエクスポートする呼び出しが含まれているプラ​​ットフォームでは、「時々」に当てはまる可能性があります。

関連する質問に対するThomasDickeyのリンクされた解決策は、上記の@Gillesの答えを再評価するのに役立ちました。しかし、私のXTermの呼び出しをログインシェルに変更する提案は、この時点で何かではありません。私にとって懸念された唯一の違いは、シェル構成を自動的にロードできないということでした。 ログインしていないシェル。

uptimeと他の特定の報告の呼び出しには、Difference between...州との相違点がありますが、私の使用事例で懸念するものはありません。私の展開は、Cygwinを使用した単一ユーザのローカル展開で、自分のマシンへの着信を受け入れることは一切ありません。したがって、すべてのXTermコールにフラグを追加するというやや冗長な修正ではなく、${ENV}を介して適切なコンフィギュレーションファイルをすべてXTermに適用する単純な1行の修正を採用しないと魅力的な理由はありません。シェルはログインモードです。

1

また、このことに気づいたかもしれません:Run xterm with login shell or not?、xtermののloginShellリソースは、ログインシェルとして動作するようにそれを伝えるために使用することができることを指摘しています。

はまた、未設定(または誤って設定)HOME変数はCygwin FAQによれば、起動時に.bashrcを調達干渉する。よくある質問にはtypical problems with HOMEが含まれています。

+0

私はあなたの助けに感謝しますが、この回答の編集について建設的な批判をしたいと思います。問題の**ログインしていない**シェルで正しく設定されていることを具体的に示しているので、 '$ {HOME} 'のテキストは多少無関係であると感じています。さらに、私のWindows環境変数。だからあなたが抱く問題は、実際には、私は既に質問文で言及していたし、明らかに私の展開には適用されませんでした。 –

関連する問題