お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2013-06-13 18:01:53

ironsand
メンバ
登録日: 2013-06-13

シェルスクリプトの拡張子について

Ubuntu Magazineの「コマンドライン再入門」でlesspipeの紹介がされてたので
VPS上にあったCentOSの同ファイルを探してみたところUbuntuなら

/usr/bin/lesspipe

となってるlesspipeがCentOSでは

/usr/bin/lesspipe.sh

となっていました。

検索して調べた所、シェルの種類ごとに拡張子を変えたり .sh で統一したり、何も付けなかったり色々な慣習があることがわかりました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42136&forum=10

この慣習はディストリごとに決まっているのでしょうか?
(例えばUbuntuはシェルファイルに拡張子をつけないが、CentOSでは必ずつけるなどのような)

それとも特に決まってはいないのでしょうか?

あと、UbuntuというよりもLinux全般の質問になってしまいましたが
このような質問もこのフォーラムでして大丈夫なのでしょうか?

オフライン

 

#2 2013-06-14 09:17:06

ry
メンバ
登録日: 2008-07-30

Re: シェルスクリプトの拡張子について

質問の可否はわかりかねますが、回答してみます。 (だめなら管理者によって適宜処理されると思う)

Linux のような Unix 系の OS には厳密な意味での拡張子は存在ません。
ファイル名の最後の . (ピリオド) より後を拡張子と呼ぶことはありますが、それによってそのファイルの意味するところが変わったりはしません。
たとえば、拡張子によってそのファイルの実行可否が決まるという動作は、Windows 特有の仕様です。
拡張子に関係なく、ファイル自身に実行権限が付加されているかどうかによってそれが決まる OS の方が多いのではないでしょうか。

なお、拡張子によってそれを開くプログラムを選定して起動するという動作は、ubunut では最近の GUI シェルで実装されたようです。(CUI しか使わないので、詳しくは知りません)

オフライン

 

#3 2013-06-14 12:44:42

ironsand
メンバ
登録日: 2013-06-13

Re: シェルスクリプトの拡張子について

返信ありがとうございます。

Unix系のOSが拡張子ではなく実行権限の有無にて動作を規定するのは知っているのですが、
拡張子をどのようにつけるか(もしくはつけるかどうか)の”Ubuntuにおける慣習”が存在するかどうかを知りたいのですが…。

質問の仕方が曖昧だったのかもしれません。

オフライン

 

#4 2013-06-14 19:20:31

hito
管理者
登録日: 2007-03-18

Re: シェルスクリプトの拡張子について

管理者的な見解としては次の通りです。

A: 「Ubuntuにも関係のある、Unixに関連する質問」であれば問題ありません。
また、こうした質問を忌避するものではありません。

B: 「Ubuntuにはほとんど関係ないUnixの質問」(たとえばSolarisのインストール方法とか)はあきらかに問題があるだろう、というのはコンセンサスを得られると思います。

これが、たとえば「Solarisでは○○という機能があるが、これをUbuntuで使うにはどうすればいいのか?」とか、「Ubuntuにある○○という機能をSolarisで使いたいのだけど、Ubuntuの実装のこのあたりはどうなっているのか?」といったものであれば、「Ubuntuにも関係のある」にカテゴライズされるので、前項のルールに照らしてアリ、ということになります。

ただし、「これはもうUbuntu関係ないよね」ということになれば、必要に応じてOff-Topicsで移動することになります。

今回の場合はUbuntuにも関係がある話なので、Aに属する、という判断です。

オフライン

 

#5 2013-06-14 19:30:58

hito
管理者
登録日: 2007-03-18

Re: シェルスクリプトの拡張子について

管理者的なコメントはひとまず以上として疑問に答えてみると、そもそも、

ironsand による投稿:

Ubuntu Magazineの「コマンドライン再入門」でlesspipeの紹介がされてたので
VPS上にあったCentOSの同ファイルを探してみたところUbuntuなら

/usr/bin/lesspipe

となってるlesspipeがCentOSでは

/usr/bin/lesspipe.sh

となっていました。

ということを手がかりに、次のような想定をされたのだと思っています。

『「lesspipe」になるときと「lesspipe.sh」になっていることがある。同じもののハズなのに名前が違うということは、きっとディストリビューションごとに、拡張子の付け方のルールがあるに違いない』

が、このふたつ、どちらもシェルスクリプトベースで実装されていて、「lesspipe」機能を提供するものではありますが、別物です。つまり、「UbuntuとRHELのどちらかが、ネーミングルールに従って拡張子を付け直した」というわけではなく、そもそもが「よく似た名前で同じ機能を提供するもの」という関係で、拡張子付けのルールによるものではありません。中身をlessで開いてみてください。

それはそれとして、あるファイルに拡張子をつけるかどうか、という「お作法」については「それらのファイルを扱うプログラムによる」という感じです。少なくともディストリビューションごとに制約される、という傾向はほとんどありません。

オフライン

 

#6 2013-06-14 22:10:07

ironsand
メンバ
登録日: 2013-06-13

Re: シェルスクリプトの拡張子について

なるほど、詳しい解説ありがとうございます。
まさにそのような推測をしていました。

フォーラムのルールについても了解しました。
御回答ありがとうございます。

オフライン

 

Board footer

Powered by FluxBB