■ シェルについて
Linuxで最も一般的なシェルは、bash(Bourne-Again Shell)です。
Debian GNU/Linuxでも、標準のシェルとして採用されています。
Armadillo 400/800(Atmark Distを使用した場合)は、bashの代わりにBusyBoxのashが使われます。
ashは、bashと良く似ていますが一部の機能が省かれており、軽量ですので組み込みシステムに向いています。
現在使われているシェルは、以下のコマンドで分かります。
[root@armadillo440-0 (ttymxc1) ~]# echo $SHELL /bin/ash [root@armadillo440-0 (ttymxc1) ~]#
■ シェルプロンプトの環境変数
シェルプロンプトは、PS1環境変数で設定されています。
[root@armadillo440-0 (ttymxc1) ~]# echo "$PS1" [\u@\h (ttymxc1) \w]\$ [root@armadillo440-0 (ttymxc1) ~]#
PS1環境変数は、/etc/profile中に記載されています。
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/profile # /etc/profile alias ll="ls -lF" alias ls="ls -F" alias rm="rm -i" TZ=JST-9 PATH="/bin:/usr/bin:/sbin:/usr/sbin" PS1="[\u@\h (`tty | cut -b6-`) \w]\\$ " ulimit -c 0 if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then umask 002 else umask 022 fi USER=`id -un` LOGNAME=$USER HOSTNAME=`/bin/hostname` HISTSIZE=1000 EDITOR=vi VISUAL=vi export TZ PATH PS1 USER LOGNAME HOSTNAME HISTSIZE EDITOR VISUAL for i in /etc/profile.d/*.sh ; do if [ -x $i ]; then . $i fi done unset i [root@armadillo440-0 (ttymxc1) ~]#
■ PS1="[\u@\h (`tty | cut -b6-`) \w]\\$ "の意味
" " | "で囲まれた部分が、シェルプロンプトとして表示されます。 |
[ ] | 見易くするための文字列です。特に意味はありません。 |
\u | ユーザ名を表示します。 |
@ | ユーザ名とホスト名を区切るために表示している文字列です。特に意味はありません。 |
\h | ホスト名を表示します。 |
tty | 標準入力になっている端末のデバイスファイル名(使用しているポート名)を表示します。 |
cut -b6- | デバイスファイル名の6バイト目以降を出力します。ここではデバイスファイル名/dev/ttymxc1の/dev/をカットしています。 |
\w | ホームディレクトリを基準にカレントディレクトリを表示します。 |
\\$ | \$: rootユーザの場合は#、それ以外のユーザの場合$を表示します。 |
■ ホスト名の変更
シェルプロンプトを変更する例として、ここではホスト名を変更してみます。
現在のホスト名は、以下のコマンドで確認できます。
[root@armadillo440-0 (ttymxc1) ~]# hostname armadillo440-0
ここでは現在のホスト名がarmadillo440-0であることが分かります。
ホスト名は/etc/HOSTNAME (/etc/config/HOSTNAMEにシンボリックリンク)に記述されています。
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/HOSTNAME armadillo440-0 [root@armadillo440-0 (ttymxc1) ~]#
また、ドメイン名は/etc/hosts(/etc/config/hostsにシンボリックリンク)に記述されています。
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/hosts 127.0.0.1 localhost 127.0.0.1 armadillo440-0 ::1 localhost.v6 [root@armadillo440-0 (ttymxc1) ~]#
ホスト名を変更する場合は、/etc/HOSTNAMEと/etc/hostsの両方を変更します。
ホスト名をarmadillo440-0からarmadillo440-1に変更した場合の例を以下に示します。
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/HOSTNAME armadillo440-1 [root@armadillo440-0 (ttymxc1) ~]#
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/hosts 127.0.0.1 localhost 127.0.0.1 armadillo440-1 ::1 localhost.v6 [root@armadillo440-0 (ttymxc1) ~]#
変更したホスト名を(一時的に)有効にするために、以下のコマンドを実行します。
[root@armadillo440-0 (ttymxc1) ~]# hostname -F /etc/HOSTNAME [root@armadillo440-1 (ttymxc1) ~]# hostname -f armadillo440-1
ホスト名がarmadillo440-0からarmadillo440-1に変更されていることが確認できます。
■ 変更したホスト名の保存
ArmadilloはRAMDISKという仕組みでRAMの一部をHDDのように使い、そこにルートファイルシステムを置いています。
前記したhostname -F /etc/HOSTNAMEを実行しても、ホスト名の変更内容はルートファイルシステムへの変更のため、電源を切ると全て失われてしまいます。
ただし例外として/etc/configディレクトリ以下のファイルだけは、保存できるようになっています。
/etc/HOSTNAME(/etc/config/HOSTNAMEにシンボリックリンク)と/etc/hosts(/etc/config/hostsにシンボリックリンク)を保存するためには、以下のコマンドを実行して下さい。
[root@armadillo440-1 (ttymxc1) ~]# flatfsd -s flatfs[1573]: using storage at /dev/flash/config flatfs[1573]: saving fs to partition 1, tstamp=19 flatfs[1573]: Wrote 666 bytes to flash in 3 seconds Flash filesystem is valid
Armadilloを再起動すると、ホスト名が変更されていることが確認できます。
■ 参考情報1
/etc/defaultには、ATDEで設定した内容が保存されています。
上記で変更した内容をデフォルト設定に戻したい(初期化したい)場合は、以下のコマンドを実行して下さい。
[root@armadillo440-1 (ttymxc1) ~]# flatfsd -w flatfsd[1576]: Nonexistent or bad flatfs (0), creating new one... flatfsd[1576]: Created 8 configuration files (699 bytes) flatfs[1577]: using storage at /dev/flash/config flatfs[1577]: saving fs to partition 0, tstamp=20 flatfs[1577]: Wrote 636 bytes to flash in 2 seconds Flash filesystem is valid [root@armadillo440-1 (ttymxc1) ~]# cat /etc/HOSTNAME armadillo440-0 [root@armadillo440-1 (ttymxc1) ~]# cat /etc/hosts 127.0.0.1 localhost 127.0.0.1 armadillo440-0 ::1 localhost.v6 [root@armadillo440-1 (ttymxc1) ~]#
上記コマンドを実行すると、/etc/configの下にあるファイルが削除され、/etc/defaultの内容が/etc/configの下にコピーされます。 そして、この内容がフラッシュメモリのconfig領域に保存されます。 Armadilloを再起動すると、デフォルト設定でArmadilloが動作します。
■ 参考情報2
クロスコンパイル時にホスト名等を指定する場合は、ATDEを起動してromfs/etc/default下の以下のファイルを変更して下さい。
atmark@atde5:~/atmark-dist/romfs/etc/default$ cat HOSTNAME armadillo440-0 atmark@atde5:~/atmark-dist/romfs/etc/default$ cat hosts 127.0.0.1 localhost 127.0.0.1 armadillo440-0 ::1 localhost.v6 atmark@atde5:~/atmark-dist/romfs/etc/default$