プロが教えるわが家の防犯対策術!

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

A 回答 (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が設定されていない事がわかります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/16 17:14

恐らく、逆だと思います。


変数$PS1に何かしら入っていれば真ということでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/16 17:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!