Subject: How do I get the current directory into my prompt?
Date: Thu Mar 18 17:16:55 EST 1993

2.4) プロンプトに、カレントディレクトリ名を出力させておくにはどうすれば 良いのですか。

これは、あなたがどんなシェルを使っているかによります。簡単なのもあるし、 難しいか不可能なのもあります。

C Shell (csh):
これをあなたの .cshrc に入れて下さい。プロンプト変数を好きなように 改良して下さい。
alias setprompt 'set prompt="${cwd}% "'
setprompt        # to set the initial prompt
alias cd 'chdir ¥!* && setprompt'
もし pushd と popd を使うなら、これも必要です。
alias pushd 'pushd ¥!* && setprompt'
alias popd    'popd  ¥!* && setprompt'
$cwd 変数を保存しておかない C シェルもあります。代わりに 'pwd' を 使えば良いのです。

もしあなたがプロンプトにカレントディレクトリの最後の要素だけが欲 しいのなら(例えば "/usr/spool/mail%" の代わりに "mail%")、

alias setprompt 'set prompt="$cwd:t% "'
古い C シェルの中には、&& と || の意味を逆にとるものがあります。 これをやってみて下さい。

false && echo bug
もし "bug" と表示されたら、&& と || を交換する必要があります。 (そしてもっと良いバージョンの csh を手に入れて下さい)

Bourne Shell (sh):
もしも新しいバージョンの Bourn Shell(SVR2以降)を使っているなら、 自分専用のコマンド、"xcd" を作るためにシェル関数を使うことができ ます。
xcd() { cd $* ; PS1="`pwd` $ "; }
古いバージョンの Bourn Shell を使っているのなら、複雑になりますが 不可能ではありません。方法を一つ示します。.profile ファイルにこれ を付け足して下さい。

        
LOGIN_SHELL=$$ export LOGIN_SHELL
CMDFILE=/tmp/cd.$$ export CMDFILE
# 16 is SIGURG, pick a signal that's not likely to be used
PROMPTSIG=16 export PROMPTSIG
trap '. $CMDFILE' $PROMPTSIG
それからこの実行可能スクリプト(インデントはしないように)を PATH の どこかに置いて下さい。それを "xcd" と呼ぶことにします。

        
: xcd directory - change directory and set prompt
: by signalling the login shell to read a command file
cat >${CMDFILE?"not set"} <<EOF
cd $1
PS1="¥`pwd¥`$ "
EOF
kill -${PROMPTSIG?"not set"} ${LOGIN_SHELL?"not set"}
これで、"xcd /some/dir" でディレクトリを移れます。

Korn Shell (ksh):
.profile ファイルにこれを入れて下さい。
PS1='$PWD $ '
ディレクトリの最後の部分だけが欲しければ、これを使います。
PS1='${PWD##*/} $ '

T C shell (tcsh)
Tcsh は有名な csh に組み込み変数を付け足した csh の拡張版です(他に も沢山の機能が付け加えられています)。 で、あなたはこれを使えば良いのです。
set prompt='%‾ '

BASH (FSF's "Bourne Again SHell")
$PS1 の中では、¥w は $HOME の代わりに ‾ を使ってカレントディレクト リの絶対パス名を与えます。¥W はカレントディレクトリのベース名 (絶 対パス名の最後の要素) を与えます。そこで上記の sh と ksh の解答の 他に、このようなものも使えます。
PS1='¥w $ '
又は
PS1='¥W $ '

UNIX FAQ LIST / Copyright(c)1994,Ted Timar / tmatimar@isgtec.com


Maintainer: あさだ たくや