なんとBashが起動していた!
LiveCDの端末ウィンドウを開いてまず驚かされるのが、シェルがBashになっていることです。さらに、各種基本コマンドの多くが、GNU版に置き換わっており、GNU主体のコマンドライン環境となっています。具体的には、ls、cp、rmなどの基本コマンドを含むGNU coreutils(core utilities)ほか、GNU tarやGNU grepなど、多くのGNUコマンドがインストールされています。マニュアルについても同様で、たとえば「man ls」を実行すると、GNU版のlsコマンドのマニュアルが表示されます。
従来のSolaris版のコマンドも共存してインストールされており、GNU版とSolaris版とは、ディレクトリ分けとPATH設定により、うまい具合に調整されています。具体的には、bash、md5sum、seqなどのように、Solaris版に同名のコマンドがないものについては直接/usr/binにインストールされ、ls、date、tarなどのように同名コマンドが存在する場合は、GNU版は/usr/gnu/binにインストールされています。ただし、gtarのように、コマンド名の頭にgを付けて使用することがあるコマンドについては、/usr/binにはコマンド名gtarでインストールされ、/usr/gnu/binにはコマンド名tarのシンボリックリンクが配置されています。結局、コマンド名gtarでもtarでも、GNU tarが実行されます。
PATHは、実行例1のように/usr/gnu/binが先頭になるように設定されており、これによってGNU版のコマンドが優先して実行されます。PATHから/usr/gnu/binを外すと、従来のSolaris版のコマンド環境になります。なお、従来/usr/ccs/binに配置されていたas、ld、sizeなどのコマンド群は/usr/bin以下に移動され、/usr/ccs/binにはシンボリックリンクが残った状態となっているため、/usr/ccs/binにPATHを通す必要はありません。
ところで、シェルはコマンド名shで起動した場合でも、/usr/gnu/bin/shのシンボリックリンク経由で/usr/bin/bashが起動します。一方、フルパスの/bin/shで起動した場合は、/sbin/shへのシンボリックリンクを経由して、/usr/bin/i86/ksh93が起動するようになっています。
そのほか、LiveCDのコマンドライン上で各種コマンドを実行してみた様子を実行例1に示します。ファイルシステムには、lofiによるイメージファイルのループバックマウントが利用され、約700MBのCDにもかかわらず、2GB程度の容量が実現されていることがわかります。
実行例1 LiveCD上のコマンドライン環境
jack@opensolaris:~$ uname -a ← システム情報を表示
SunOS opensolaris 5.11 snv_86 i86pc i386 i86pc Solaris
jack@opensolaris:~$ echo $LANG ← 環境変数LANGの値を表示
ja_JP.UTF-8
jack@opensolaris:~$ df -a ← ファイルシステムの状況を表示
Filesystem 1K-blocks Used Available Use% Mounted on
/devices/ramdisk:a 170535 163756 6779 97% /
/devices 0 0 0 - /devices
/dev 0 0 0 - /dev
ctfs 0 0 0 - /system/contract
proc 0 0 0 - /proc
mnttab 0 0 0 - /etc/mnttab
swap 669668 748 668920 1% /etc/svc/volatile
objfs 0 0 0 - /system/object
sharefs 0 0 0 - /etc/dfs/sharetab
/devices/pci@0,0/pci-ide@1f,1/ide@1/sd@0,0:a
702234 702234 0 100% /.cdrom
/dev/lofi/1 1917028 1917028 0 100% /usr
/dev/lofi/2 142584 142584 0 100% /mnt/misc
/usr/lib/libc/libc_hwcap1.so.1
1917028 1917028 0 100% /lib/libc.so.1
/mnt/misc/opt 142584 142584 0 100% /opt
fd 0 0 0 - /dev/fd
swap 668932 12 668920 1% /tmp
swap 668952 32 668920 1% /var/run
swap 668920 0 668920 0% /root
swap 669432 512 668920 1% /jack
/dev/dsk/c4t0d0s2 702234 702234 0 100% /media/OpenSolaris-2008-05
jack@opensolaris:~$ lofiadm /dev/lofi/1 ← イメージファイル1の状況を表示
/.cdrom/solaris.zlib
jack@opensolaris:~$ lofiadm /dev/lofi/2 ← イメージファイル2の状況を表示
/.cdrom/solarismisc.zlib
jack@opensolaris:~$ echo $BASH_VERSION ← シェル変数BASH_VERSIONの値を表示
3.2.25(1)-release
jack@opensolaris:~$ grep '^jack:' /etc/passwd ← jackのログインシェルは、
jack:x:65432:10:Default User:/jack:/usr/bin/bash ← /usr/bin/bashになっている
jack@opensolaris:~$ sh --version ← コマンド名shでも、
GNU bash, version 3.2.25(1)-release (i386-pc-solaris2.11) ← bashが実行される
Copyright (C) 2005 Free Software Foundation, Inc.
jack@opensolaris:~$ echo $PATH ← PATHは、
/usr/gnu/bin:/usr/bin:/usr/X11/bin:/usr/sbin:/sbin ← GNU優先の設定
jack@opensolaris:~$ echo $MANPATH ← マニュアルも、
/usr/gnu/share/man:/usr/share/man:/usr/X11/share/man ← GNU優先の設定