-PR-
締切済み

UNIX(Bシェル)のプロンプトについて

  • 困ってます
  • 質問No.17113
  • 閲覧数616
  • ありがとう数0
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 25% (1/4)

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

回答 (全3件)

  • 回答No.1
レベル11

ベストアンサー率 55% (155/280)

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

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

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

お礼率 25% (1/4)

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


  • 回答No.2
レベル10

ベストアンサー率 22% (48/214)

PS1='[$PWD]'とすればうまくいかないでしょうか?
PS1='$PWD \!:'というのもできますね。
  • 回答No.3
レベル11

ベストアンサー率 55% (155/280)

純粋な 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` "; }
補足コメント
nuky

お礼率 25% (1/4)

OSはSunOS 5.6です。cdはできませんでした。
suの方もユーザーが変った時点でシェルの実行がストップしてしまうのかsu以降のコマンドが実行されませんでした。
投稿日時 - 2000-12-11 10:44:42
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ