INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
本業の方のお仕事が再び忙しくなりつつあるので、断続的にしばらく更新が止まることがあります。

目次 | ←前へ / 2020-10-14 00:00 / 次へ→ / 最新へ⇒

■pushdコマンドとpopdコマンドをLinuxでも使いたかったのに、挙動が、あれ?

2020/10/14 0:00:00


RSSRSS配信中

https://www.inasoft.org/








普段、Windows上で作業をしていて、特にバッチファイルを作っているときはpushdコマンド/popdコマンドを多用することがあります。

このコマンドは、cdコマンドでカレントディレクトリを移動する動作に似ていますが、pushdで移動したらpopdで戻れるという特徴があります。しかもstackの要領で、「行って→行って→帰って→帰って」みたいなことができるというわけですね。

どちらが発祥かは知りませんが、これと同じことをLinuxでやりたいと思えば、普通に使えました。

なので、これをシェルスクリプトに組み込んで使おうとすると、、、失敗します。

あれ?なんでだ?

普通に考えれば、手で入れて使えるコマンドは、シェルスクリプト上でも使えそうなもんなんですけどね…。

なーんて罠に陥りがちですが、シェルスクリプトがどんな動作をするかは、何がシェルとして採用されているかによって変わるわけで、デフォルトでは /bin/sh の動作に従います。/bin/sh と /bin/bash を指定していた場合では、互換性の都合から微妙に動作が違うことがあるそうで。エラー時の動作とか。

そんなうちの一つに、pushdとpopdが使えるか否かという違いがあるとのこと。

というわけで、シェバン(スクリプトの最初の1行目に書くやつ)が「#!/bin/sh」になっていると、pushd/popdが使えない。

pushd/popdを使いたければ、シェバンは「#!/bin/bash」にしておく必要がある。

という気付きでした。


【追記】

遷移元のディレクトリに戻る場合は「cd -」のように、オプションとしてハイフンを付ければ簡単に戻れるとのこと。

こっちはWindowsのcd(chdir)コマンドにはない手法で、知りませんでした。

勉強になりました。



目次 | ←前へ / 2020-10-14 00:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。




2555460 (+0065)[+0539]

Copyright© 2010-2021 INASOFT