プロが教える店舗&オフィスのセキュリティ対策術

Bシェルのプロンプトの設定は環境変数PS1に変えたい文字列を入れればOKですが、現在自分のいるディレクトリ名を表示させたい場合はどのようにしたらいいでしょうか。
PS1="["`pwd`"]" などと設定してもディレクトリが変わったらその設定したときのディレクトリ名のままです。
 また、ユーザ名も表示したいのですがsuコマンドでユーザ名を切り替えた場合プロンプトに表示させたユーザ名も変更させることはできるのでしょうか?

A 回答 (3件)

純粋な sh でそれをやれとは酷な要求ですねぇ。



まず、su に関しては、最悪でも /usr/bin (unix によっては /bin ?)
より前のパスに、su っていう名前のシェルスクリプトを置いて、
適当にいじればいいかと思います。こっちは不可能ではない。

でも、cd は sh の仕様によっては無理かもしれません。シェルス
クリプトでは、親のディレクトリを変更できません。alias 機能が
あって、cd を上書きできたとして、本来の cd を実行できる機能
がないと、やはりつまづきます。最近の sh なら、alias に似た
function 機能がありますが、例えば SunOS の sh だと、cd コマ
ンドの上書きはできないようです。FreeBSD の sh と、Laser5
linux の bsh なら、次のようにできると思います。
cd () { command cd $1; PS1="`pwd` "; }

この回答への補足

OSはSunOS 5.6です。cdはできませんでした。
suの方もユーザーが変った時点でシェルの実行がストップしてしまうのかsu以降のコマンドが実行されませんでした。

補足日時:2000/12/11 10:44
    • good
    • 0

PS1='[$PWD]'とすればうまくいかないでしょうか?


PS1='$PWD \!:'というのもできますね。
    • good
    • 0

sh から派生した bash や、zsh ならば、PS1 に適当な記号を設定


すると、ご希望のことができますが、本来の sh では、PS1の設定
だけでは無理かと思います。もっとも、sh といいつつ、bash か
zsh か他の拡張された sh を使っている場合もあるので、詳細はマ
ニュアルを見た方がいいと思います。

bash 系ならば、\u でユーザ名、\w でディレクトリ名に展開され
ます。zsh 系ならば、%n でユーザ名、%d か %~ でディレクトリ名
に展開されます。

もしこういった機能がなくて、alias 機能があるなら、cd と su
を alias して、PS1 を変更してから実際のコマンドを実行するよ
うにするという手もあるでしょう。

この回答への補足

そうなんです。bashならできるんですけど、shでやれといわれたんです。上司に・・・
自分でもいろいろ調べてみたんですが、コマンドを見張りつつPS1の値を変更していくようなシェルを書かないとできないような気がします。

補足日時:2000/12/07 17:02
    • good
    • 0

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