玄箱Pro、直します。

超初心者が、玄箱PROでLinuxを勉強する無謀なブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
別窓 | スポンサー広告
∧top | under∨

lddが使えない(3)

見落としていました。

前回の記事「lddが使えない(2)」で、sushi-kさんのDebian化後の/usr/bin/lddと、標準ファームの/usr/bin/lddには3つの違いがある、と書きましたが、もう1つありました。

しかもそれが原因だった、という一番重要な箇所でした。

しかも・・・1行目(笑)

NG
#! /bin/sh

OK
#! /bin/bash


ここでした。
標準ファームlddの1行目、ここの部分をshからbashに変更すればlddは動きます。

shとbashの違いがよくわかりませんのでちょっと調べてみました。
まず

~ # ls -l /bin | grep sh
lrwxrwxrwx 1 root root 7 Apr 10 22:45 ash -> busybox
-rwxrwxrwx 1 root root 619848 Dec 21 2006 bash
lrwxrwxrwx 1 root root 4 Apr 10 22:45 bash2 -> bash
lrwxrwxrwx 1 root root 7 Apr 10 22:45 fdflush -> busybox
lrwxrwxrwx 1 root root 7 Apr 10 22:45 sh -> busybox


としてみると、
sh -> busybox
とありますので、shとはbusyboxのコマンドとわかりました。

一方、坂本浩則さんの「シェル」というページに以下の説明がありました。

sh - Bourne シェル, POSIX シェル
sh は標準のシェルであり、 POSIX(IEEE Std1003.2) で標準化されていますが、 全てのシステムの sh で完全に POSIX 対応しているわけではありません。 対話機能が貧弱なため、ログインシェルとして使用されることは少なく 主にスクリプトとして使用されています (システムがハングした後の再起動時に fsck が失敗したりすると /bin/sh で作業する必要があったりもしますが)。 FreeBSD などでは ash と呼ばれる機能強化したものが使用されています。 ksh や bash が /bin/sh として使われているシステムもあります。

bash - Bourne Again SHell
Bourne シェルを元に機能拡張したシェル。 コマンドラインでの編集機能が充実しており、 ksh とはよく似ています。 GNU のソフトとして配布されており、 特に Linux で標準シェルとして採用されていることで広まっています。


とのこと。つまりbashとはshの機能拡張版か。
どうやら今後のことを考えて、文中にもあるように「bashを/bin/shとして動かす」という方法がいいような気がしてきました。
ということで

~ # mv /bin/sh /bin/sh.orig
~ # ln -s /bin/bash /bin/sh
~ # ls -l /bin | grep sh
lrwxrwxrwx 1 root root 7 Apr 10 22:45 ash -> busybox
-rwxrwxrwx 1 root root 619848 Dec 21 2006 bash
lrwxrwxrwx 1 root root 4 Apr 10 22:45 bash2 -> bash
lrwxrwxrwx 1 root root 7 Apr 10 22:45 fdflush -> busybox
lrwxrwxrwx 1 root root 9 Aug 8 15:08 sh -> /bin/bash
lrwxrwxrwx 1 root root 7 Apr 10 22:45 sh.orig -> busybox


としました。これならほかに/bin/shを使用するスクリプトがあっても自動でbashを使うことになりますし、いちいちスクリプトそのものの1行目を直してまわる必要もありません。

原因ははっきりしません。
"busyboxのsh"をキーワードにググってみると、6件だけヒットするんですがどこも「busyboxのshは特殊」というニュアンスですね。
私個人はbusyboxさんはtarや今回のshの件で、とにかく困ったちゃんな印象を持ちました(笑)。

とりあえずすっきりしましたのでビルド練習に戻れます。
スポンサーサイト
別窓 | 日記のようなもの | コメント:0 | トラックバック:0
∧top | under∨
<<標準ファームにlighttpd(2) | 玄箱Pro、直します。 | lddが使えない(2)>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

トラックバックURL

FC2ブログユーザー専用トラックバックURLはこちら
∧top | under∨
| 玄箱Pro、直します。 |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。