Date: Thu, 6 Nov 2025 19:52:26 +0900 From: Tomoaki AOKI <junchoon@dec.sakura.ne.jp> To: bluesky <xlsvx@yahoo.co.jp> Cc: freebsd-users-jp@FreeBSD.org Subject: Re: root =?UTF-8?B?44Gu?= shell =?UTF-8?B?44Gr44Gk44GE44Gm?= Message-ID: <20251106195226.3e709b9b0388889e4d18be2b@dec.sakura.ne.jp> In-Reply-To: <1096998328.2154996.1762382470899@mail.yahoo.co.jp> References: <20251103014749.1E94.B142C0B6@nugae.org> <ydlqzufaj6s.fsf@pc06.mar> <1096998328.2154996.1762382470899@mail.yahoo.co.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 6 Nov 2025 07:41:10 +0900 (JST)
bluesky <xlsvx@yahoo.co.jp> wrote:
> 悸村です。
> shell の話題ということで、このスレッドに付けさせて頂きます。
>
> FreeBSD の /bin/sh には、pushd, popd がないように見え面倒なので
> 私もログイン・シェルを bash に変更していた一人です。vipw 使用。
> ところが、内部的には /bin/sh にも popd 相当の機能があるかも知れな
> いようですね。 cd - と指定するようです。
>
> 初心者の質問で恐縮ですが、/bin/sh の history に関してです。
> history で履歴を確認したあと、番号のコマンドを再実行する方法が
> 判らなくて困惑しています。bash のごとく、
> !127 などと指定しても期待どおりに動作しません。
> どう指定すればいいのか、どなたかご教示いただけないでしょうか。
>
> --
> (yahoo.co.jp からは時々、外部のメイラーを使わないでほしい旨のメールが届く)
> bluesky
青木@名古屋です。
`cd -` ですが、(t)cshのpushdやpopdと同じ動作をすると裏切られます。
以下、実験結果です。
$ cd /usr/ports
$ cd /usr/src
$ cd -
/usr/ports
$ cd -
/usr/src
$ cd -
/usr/ports
$ cd -
/usr/src
$ cd -
/usr/ports
$ cd -
/usr/src
$ cd -
/usr/ports
$ cd -
/usr/src
$
最初はホームディレクトリにいて、/usr/ports、次に/usr/srcにcdして
`cd -`を連続で実行するとこの2つのディレクトリを交互に移動する
だけで、ディレクトリスタックにはなっていません。
sh (1) man pageでは
cd [-L | -P] [-e] [directory]
cd - Switch to the specified directory, to the directory specified in
the HOME environment variable if no directory is specified or to
the directory specified in the OLDPWD environment variable if
directory is -. (以降略)
となっていて、`cd-`で移動するたびに直前のディレクトリが${OLDPWD}に
設定されてしまうようです。
対話型でディレクトリスタックが欲しければ、大人しく(t)cshなり他の
対応したシェルを使用してスクリプトだけ/bin/shを使うのが早道かと。
ログインシェルをportsから入れたものにしたくなければ(t)csh一択
ですね。 (/bin/cshの実体は/bin/tcshです)。
--
青木 知明 [Tomoaki AOKI] <junchoon@dec.sakura.ne.jp>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20251106195226.3e709b9b0388889e4d18be2b>
