GNU 開発ツールを読んでのメモ -- sh コマンドって

bash へのシンボリックリンクになってんだね.

$ file /bin/sh
/bin/sh: symbolic link to `bash'

GNU Development Tool を読んでて,
BSD だと /bin と /sbin は, 静的リンクで作成されてるけど, Linux は, 動的リンクだ, のようなことが書かれててさ.
# libc.a が壊れたときのことを考慮して, BSD は, 静的リンクにしてるとのこと.
へーと思って, 試してみたのさ.
確かに, うちの Linux (Debian etch) は, 動的リンクやったよ.

$ file /bin/bash
/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), for GNU/Linux 2.4.1, stripped

こんな感じで, dynamically linked ってなってる.



一瞬, cp とかが 50K ぐらいで,
自分の作った静的リンク版 Hello, World が 400K 超だから,
なんで?と勘違いしたけど, 当たり前だ.
動的リンクやもんね. そやそや.


さらにこれに付随して, file コマンドで遊んでたら, 気付いた.
which って, シェルスクリプトやったんだ.

$ file /bin/* | grep shell
...
/bin/gzexe:          Bourne shell script text executable
/bin/which:          Bourne shell script text executable
/bin/zcmp:           Bourne shell script text executable
/bin/zdiff:          Bourne shell script text executable
...

中ももちろん見れる.
54 行.
あれ?でも, ソース読んでてなんか違和感があるなあと思って,
which コマンドに which すると,
shell build-in command って出る.

$ which which
which: shell built-in command

どうも, zshtcsh だと shell built-in command になっていて,
bash やと普通に, /bin にあるのを使ってるみたい.
ちなみに, 自分のシェルは, zsh.
シェルも色々やってんやなあ.
shell built-in command や, 調べようが, 無いよなあ. zsh の中身みないと.
まあ, そこまでする気なんてさらさら無いけどw



ん?Bourne shell script だから, bash で /bin のを使うのは当たり前か?
ん?ん?
bash ノットイコール bourne shell やっけ?
なんか混同してるな.


http://ja.wikipedia.org/wiki/Bourne_Again_Shell
ほぼ, 同じと考えていいのかな.
いけないよね. でも後方互換が考慮されてるみたいやから近いものではあるみたいやね.

更新時刻

  • 1かいめ 2007年, 7月21日, 2:34
  • 2かいめ 2007年, 7月21日, 2:52
  • 3かいめ 2007年, 7月21日, 2:56