• ベストアンサー

if [ "$PS1" ]の意味を教えてください。

/etc/bashrcをみていたのですが if [ "$PS1" ]のところが引っかかりました。 これは$PS1になにもはいっていなければ真ということでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

$ man bash を実行して「条件式」の所を読めば分かりますが、 -------8<-------8<-------8<-------8<-------8<------- 条件式 条 件式は複合コマンド [[ と組み込みコマンドの test および [ によって使用でき、ファイルの属 性を調べたり、文字列比較や算術式比較を行ったりできます。 <途中、省略> string string の長さが 0 でなければ真となります。 -------8<-------8<-------8<-------8<-------8<------- とあるようにシェル変数PS1の長さが0でない場合、つまり何か設定されている場合に真という事です。 ちなみに >if [ "$PS1" ] ですが、対話的にシェルを使用する場合には、シェル変数PS1は設定されていますが、シェルスクリプトとして実行される時にはシェルではシェル変数PS1は設定されません。 なので起動されたシェルが対話的に使用されるのかシェルスクリプトのように対話的に使用されないかを判断する事が出来ます。 シェル変数は、 $ set とすると設定内容が表示されますが、これをシェルスクリプト内で実行するとシェル変数PS1が設定されていない事がわかります。

noname#24489
質問者

お礼

詳しくありがとうございます。大変参考になりました。^^

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • agharta
  • ベストアンサー率52% (54/103)
回答No.1

恐らく、逆だと思います。 変数$PS1に何かしら入っていれば真ということでしょう。

noname#24489
質問者

お礼

ありがとうございました。^^

すると、全ての回答が全文表示されます。

関連するQ&A