2011-02-07 11 views
1

PS1変数の値をbashスクリプト内で取得する必要があります。bashスクリプト内で外部PS1値を取得する

スクリプトを実行すると、スクリプトにbash pass env変数が作成されることがわかりますが、スクリプトの実行者を信頼しないので、呼び出される方法に関係なくPS1を取得する必要があります。

どうすれば入手できますか?

更新: 変数は/etc/profileに輸出されているが、私はそれを得ることはできません。

[ Test ] [email protected]:~# export | grep PS1 
declare -x PS1="[ Test ] \\[email protected]\\h:\\w\\\$ " 
[ Test ] [email protected]:~# cat test.sh 
echo $PS1 
[ Test ] [email protected]:~# bash test.sh 

私は最後のコマンドからの出力を取得していません。

答えて

1

この変数は何とか特別な方法でbashで扱われます(例えば、AIXやHPUX shでは非対話型でもアクセスできます)。これは対話型シェルでのみ使用されているため、非対話型呼び出しではその値にアクセスする可能性はありません。

申し訳ありませんが、

+0

こんにちは、あなたの答えの参照を提供できますか? –

+0

私がman bashのセクションINVOCATIONで探していたものを見つけました。あなたが正しいです。ありがとう! –

+0

@Andrea Spadaccini:申し訳ありませんが、私は最後の週末ネットアクセスなしでいくつかの実際の生活を持っている:)しかし、あなたはあなたの情報を見つけたようですね。 –

5
は「bashの-i」でテストスクリプトを起動し

...それは何の答えはないのですが、それはそれがある方法です。これはログインシェルのように振る舞い、(とりわけ)PS1を設定します。

スクリプトが、あなたはまた、このように、最初の行に-i提供することができます(.eg ./test.sh)実行可能ファイルとして実行される場合は、次の

#!/bin/bash -i 

更新:これだけあなたのスクリプトが直接実行された場合に動作します。

$ ./test.sh 

ないのとおりと

$ bash test.sh 

が再び非対話型シェルでそれを実行します。コマンドラインからのbashを使用したい場合は、このようにそれを実行します。

$ bash -i test.sh 
+0

ありがとうございますが、動作しません。私は提案されたシバンヘッダーと簡単な 'echo prompt:$ PS1'を使ってテストスクリプトを作成しましたが、' prompt: 'という出力が得られました。 –

+0

私はこれから$ PS1の出力を得ます。 – doublejosh

+0

Andrea:あなたは 'bash test.sh'でスクリプトを実行していましたか?アップデートを参照してください。 – Mark

1

5年後....私はこの質問を見つけた後、次のソリューションを使用しているため。

ヘッダーに-iフラグを付けることができれば、特別な方法で実行することなくスクリプト中に環境を維持するように見えます。私。

これに他の奇妙な動作が含まれているかどうかはわかりませんが、必要なものに対してはうまくいきました。

関連する問題