• 締切済み

bash --login -i ??

windows の cygwin でセットアップされる cygwin.bat を見ると、 bash --login -i と書いてあります。 --login 、-i とは何だろう、と思って man bash とすると、 --login はログインシェル -i はインタラクティブモード となっています。 (1) ログインシェルとはなんでしょう? 気づいたこととしては、コマンドプロンプトから bash と入力するだけのときと、--login をつけたときでは、プロンプトがちがうようです。(.bashrcを読み込まない?) (2) インタラクティブモードとはなんでしょう。 -i をつけたときとつけなかったときで、特に目に見えた違いはわからなかったのですが。。

みんなの回答

  • rara_sun
  • ベストアンサー率50% (271/539)
回答No.1

> (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

white-tiger
質問者

お礼

すみません。 (1) 0 番目の引き数、というのが分からないので教えていただけないでしょうか。 (2) 「標準入力と標準出力がいずれも端末に接続されている状態のものを指します。」というのは、通常のシェルでもそのような気がするのですが、インタラクティブモードとなると、具体的にどのような違いがあるのでしょうか?

関連するQ&A

  • cygwin で "bash --login -i"するとホームディレクトリに移動してしまう

    cygwin で startx から X-Window を使いたいと思っています。 私は cygwin.bat を使わずに、コマンドプロンプトから直接 bash とタイプしています。(エクスプローラから好きなディレクトリでコマンドプロンプトを開くことができるようにしてあります) (1) コマンドプロンプトから bash とタイプとすると、startx とタイプしても反応がありません。 (2) bash --login -i とタイプすると、startx はできるのですが、ディレクトリが勝手に cygwin のホームディレクトリに移動してしまいます。 ディレクトリを移動せずに cygwin を起動して xwindow を使う方法はないでしょうか?

  • CygWinで 「bash-3.2$」と表示される

    Windows Vista を使用しており、 http://musashi.sourceforge.jp/cygwin/cygwin.html http://musashi.sourceforge.jp/cygwin/cygwin.html を参考にCygWinをインストール、環境設定を行いました。 ショートカットから起動させると、はじめはプロンプトが「ログイン名@PC名」になっていましたが、インストールしたパッケージなどを「CygWin」という新規フォルダへ保存した後にもう一度起動しようとすると起動できなかったので、「CygWin.bat」の中身を   -------------------------------- @echo off D: chdir D:\usr\local\CygWin\bin bash --login -i -------------------------------- のように編集しました。(chdirの行に \CygWin を追加した) しかし、もう一度起動すると今度はプロンプトが「bash-3.2$」という表示に変わってしまいました。 CygWinインストールのWEBページを見ているとこの表示ではうまくインストール出来ていないと書いてあるのですが、どうしたら「ログイン名@PC名」と表示するようにできるでしょうか。 「cd HOME」のコマンドが通らないため .bashrc ファイルがうまく読み込めていないのかと思い保存する場所を変えたり試行錯誤しましたが、うまくいきません…

  • bashの-iオプションについて

    bashに「-i」オプションがあります。 Manで調べても意味がわかりません。 実際、bash -iを試してみても「-i」オプションが無い場合と動きがかわらないように思われます。 このオプションの意味についてどなたかおしえていただけないでしょうか? [root@localhost ~]# man bash -I -I オプションが指定されると、 bash は 対話的 (interactive) に動作します。

  • bashでのシェル変数の遅延展開

    こんにちは。 現在、Cygwinでbashを使っています。 最近思ったのですが、コマンドプロンプトにおける環境変数の遅延展開のような機能が、 bashでは存在しないのでしょうか? 例えば、~/.bashrcで alias cdb="cd $OLDPWD" と記述しておき、ディレクトリを移動する度に、このエイリアスの動作が変化するようにしたいと思っています。 何か御存じの方がいらっしゃれば、是非アドバイスを頂きたいです。 では、よろしくお願い致します。

  • CYGWINやKNOPPIXを、BシェルからCシェルに変更したいです。

    お世話になっております。 疑問となっている事は以下の通りです。 (1)CygwinのプロンプトををBシェルからCシェルへ変更する手順。 (2)KnoppixのプロンプトををBシェルからCシェルへ変更する手順。 ということをしたいと思います。 (1)については、Cygwin.batの最後にあるbashをcshに変更したのですが、Cygwin自体が起動しなくなりました。 (2)については、どの様な設定をすればよいか全く解らない状態です。 どのような設定をすれば、Cシェルが扱えるようになるのでしょうか。 ご教授のほど、宜しくお願いします。

  • bash.exeを直接起動するとgccが実行できま

    C言語を始めてみようと思ってcygwinをインストールしました。初心者です。 Cygwin.batから起動するとキチンとgccコマンドが使えるのに、bash.exeから直接起動すると、なぜかcommand not foundとなってしまいます。emacsからコンパイルできるようにしたいと思っているので、不都合で困っています。どうすればよいのでしょうか。

  • Linuxのシェル(sh,bash等)について

    Linux上でコマンドを実行するとき、その窓口となるものが、シェル(sh,bash)という認識です。 つまり、 (1)CUI環境でLinuxを操作する上で、シェル以外でコマンドを実行する事はありうるのか? (2)Windowsのコマンドプロンプトも一種のシェルと言えるか 以上、2点についてお教え頂きたいです。 宜しくお願いします。

  • Cygwin Ctrl+C ( .tcshrc の場合 )

    Cygwin 終了時の「バッチジョブを終了しますか」を回避したいです。 ( Ctrl+C を使うと発生する ) bashを利用していれば、以下のようにすれば直ることは分かりました。 * 起動するショートカットが C:\cygwin\cygwin.bat を起動しているため。 * c:\cygwin\bin\bash.exe --login -i に変更すると直る。 .tcshrc においては、どのようにすればよいのでしょうか?

  • ログインシェルの役割

    ログインシェルの役割って何でしょう? 何のためにあるのでしょうか? bash だと、bash --login としてログインすると「.bash_profile が読み込まれて、ログインシェルとしてログインした」ということになります。 でも、--login をつけなくても普通に仕事をできますよね? 何か歴史的な意味でもあるのでしょうか? 好くなとも、実用的な価値はさっぱり分かりません。

  • Emacs上でmoreやlessが機能しない

    こんにちは。 Emacsは、Gnu Emacs for Windows 23.4 を使っています。 Emacsのシェルモードでは、cygwinのbashを使っています。 このシェルモードで、ファイルをmoreやlessといったコマンドで表示しようとしても、 1ページずつ表示されず、catコマンドと同じように、一気に表示されます。 Emacsのシェルモードでは、moreやlessの1ページずつ表示する機能は、使えないのでしょうか? 以上の件について何かご存知の方がいらっしゃれば、是非教えて頂きたいと思います。