質問: bash --login -i ?? windows の cygwin でセットアップされる cygwin.bat を見ると、 bash --login -i と書いてあります。 --login 、-i とは何だろう、と思って man bash とすると、 --login はログインシェル -i はインタラクティブモード となっています。 (1) ログインシェルとはなんでしょう? 気づいたこととしては、コマンドプロンプトから bash と入力するだけのときと、--login をつけたときでは、プロンプトがちがうようです。(.bashrcを読み込まない?) (2) インタラクティブモードとはなんでしょう。 -i をつけたときとつけなかったときで、特に目に見えた違いはわからなかったのですが。。
回答: > (1) ログインシェルとはなんでしょう? ログインシェルとして起動されたかのように bash を動作させます ログインシェル(login shell)とは、0 番目の引き数の最初の文字が - であるシェル、または --login オプション付きで起動されたシェルのことです。 そうするってーと、何が良いか。 /etc/profile ファイルが存在すれば、 bash はまずここからコマンドを読み込んで実行します。このファイルを読んだ後、 bash は ~/.bash_profile, ~/.bash_login, ~/.profile をこの順番で探します。 bash は、この中で最初に見つかり、かつ読み込みが可能であるファイルからコマンドを読み込んで実行します。 > (2) インタラクティブモードとはなんでしょう。 -i をつけると、bash は 対話的 (interactive) に動作します。 対話的なシェルとは、オプションでない引数がなく、標準入力と標準出力がいずれも端末に接続されている状態のものを指します。だから、isattyで調べられます。 ps1 が設定され、 $- に i が含まれます。これを利用すると、対話的動作の状態であるかどうかを、シェルスクリプトや起動ファイルの内部で調べられます。 ログインシェルでない対話的シェルとして起動されると、 ~/.bashrc ファイルがあれば、 bash はここからコマンドを読み込み、実行します。 もっと、細かな違いを知りたければmanページを見ると書いてあります。 上記解説は、manページに書いてあった内容です。 http://www.linux.or.jp/jm/html/gnu_bash/man1/bash.1.html