2008.12.03

sh系シェルスクリプトで空のif文はエラーになる

今ごろ知ったのだが、sh系シェルスクリプトでif文の中身を空行やコメント行のみなど空っぽにすると、エラーになる。

*空のif文でエラー
---------------------------------------------------
#!/bin/sh

if [ 'a' = 'a' ]; then
fi

[ozuma@macmini ozuma]$ ./go.sh
./go.sh: line 4: syntax error near unexpected token `fi'
./go.sh: line 4: `fi'
---------------------------------------------------


*コメントアウト行のみでもエラー
---------------------------------------------------
#!/bin/sh

if [ 'a' = 'a' ]; then
#echo 'OK'
fi

[ozuma@macmini ozuma]$ ./go.sh
./go.sh: line 5: syntax error near unexpected token `fi'
./go.sh: line 5: `fi'
---------------------------------------------------


*cshなら大丈夫
---------------------------------------------------
#!/bin/csh

if ( 'a' == 'a' ) then
endif

[ozuma@macmini ozuma]$ ./go.sh
[ozuma@macmini ozuma]$
---------------------------------------------------

何故だろう? 仕組みがいまいちよく分からん。
ちなみに最近のLinuxではshはbashそのものなので、Solarisの素のshも使ってみたが同様だった。

まぁ空のif文は書かないコーディング規約にしていても、元々バッチなどで用意されていた機能をコメントアウトして、ifの中身がコメント行のみになってしまうと途端にerrorになる。ので微妙にハマることがある

ちなみに、どうしても空のif文を作りたければ、builtin(1)で用意されているヌルコマンド : を使えば良い。

*コロンを使った空のif文
---------------------------------------------------
#!/bin/sh

if [ 'a' = 'a' ]; then
:
fi
---------------------------------------------------

詳しくは、$ man sh せよ

| | コメント (0)

2005.07.24

VineLinuxで無線LAN

血迷って、メルコの無線LANカード(WLI-PCM-L11GP)を買ってきた
まぁ早速、VineLinux 3.1CRで使ってみたよ

●環境
Panasonic Let's note CF-B5ER
VineLinux 3.1CR
WLI-PCM-L11GP

●設定
とりあえず、カードは刺せば認識する

[ozuma@localhost wireless]$ dmesg | grep eth1
eth1: Station identity 00XX:00XX:00XX:00XX
eth1: Looks like a Lucent/Agere firmware version 8.36
eth1: Ad-hoc demo mode supported
eth1: IEEE standard IBSS ad-hoc mode supported
eth1: WEP supported, 104-bit key
eth1: MAC address 00:02:2D:XX:XX:XX
eth1: Station name "HERMES I"
eth1: ready
eth1: index 0x01: Vcc 5.0, irq 3, io 0x0100-0x013f
eth1: New link status: Connected (0001)

カードの設定は、[システム・ツール]→[ネットワーク設定]でGUIなツールを使えば良いよ
20050724setting
ただ、この設定ツールでは無線部分の設定(ESSIDとか)が設定できないのかな? なんか[無線LANの設定]みたいなタブが出ないんだよな……なので、そっちは手動でやることに

●無線の設定
# /sbin/iwconfig eth1 essid "000XXXXXXX" key "s:XXXXX"
最初に、ESSIDとWEPのキーの設定。40bitの5文字は、頭に"s:"を付けないとダメらすぃ
ちなみにここで、
# /sbin/iwconfig eth1 essid "000XXXXXXX"
# /sbin/iwconfig eth1 key "s:XXXXX"
とやると、何故かESSIDの中身が勝手に化けてしまって上手くいかない……何故? とりあえず、ESSIDとkeyは一緒に設定しないとダメっぽい

# /etc/init.d/network restart
# /sbin/ifconfig eth0 down
で、ネットワーク設定をrestartしてDHCPで取り直す。最後に、内蔵のLANを無効にして終了

ちなみに/etc/sysconfig に設定ファイルを作っておけば、いちいちiwconfigコマンドを打たなくてもいいハズなんだけど……何故かそちらに書いた内容は無視されてしまった。うーん、何故だ?
とりあえずメンドいけど、毎回iwconfigでしのぐことに

| | コメント (1) | トラックバック (1)

2005.02.22

一太郎 for Linux & ATOK for Linux

既に先週に購入していたわけだが:
一太郎 for Linux

うおー、なんかいくつか問題があって、やっとインスコできたよー。VineLinux 3.1CRだと少しハマったね
とりあえずインストールの手順だよ。ちなみに、一太郎 for LinuxにはATOK for Linuxも付いてきます。なのでこっちを買った方がお得。

§漏れ環境
VineLinux 3.1CR
ATOK X インストール済み

(1) apt-get update; apt-get upgrade
とりあえず、最新版にしておく。
っつーか本当は vutils だけ最新にしとけばいいんだろうけど、まぁメンドいしな。

(2) 一太郎 for Linux をインスコ
CD-ROMをセットして、/mnt/cdrom/bin/setuptaro を実行するだけ。のはずなのだが……。
なぜかCD-ROM上から起動しようとすると、

[root@localhost root]# /mnt/CDRCB03-scd0/bin/setuptaro
bash: /mnt/CDRCB03-scd0/bin/setuptaro: /bin/sh: bad interpreter: 許可がありません
うーん…… /bin/sh はちゃんとあるぞ? 何故?
ローカルのHDD上にCD-ROMの内容を全部コピーして、そっちから起動したら動いた。原因不明。まぁ動いたからいいか。
基本的に聞かれることに逆らわずに、がしがし「y」でインスコしてしまえ。

(3) ATOK for Linux インスコ
既に ATOK X がインストール済みでも、勝手に旧バージョンは削除してくれるから上書きインストールしてよい。

[root@localhost bin]# ./setupatok
これも逆らわずにひたすら「y」で。

(4) ATOK X 移行ツール
マニュアルには、ATOK Xを使っていた場合はここで /opt/atokx2/sbin/xatokx2cvttool を走らせて辞書データなどを移行しろと書いてある。しかし、これはやってはいけない
どうもバグがあるっぽく、これで移行した辞書ファイルは特定の文字列を含んでいると破損してしまう。破損した辞書ファイルがあると、変換時にいきなりフリーズするのでかなり復旧がメンドい。(2chでも辞書が壊れた人がいたので、私だけじゃないと思う……)。
具体的には、ATOK Xで「……」を「てんてん」で単語登録していたのだが、この辞書を移行して変換すると100%フリーズしてしまう。

なので、今は辞書変換しない方が良いようだ。修正モジュールを待ちましょう

(5) setime atokx2
Vineでおなじみのsetimeを使って、atokx2(ATOK for Linux)を選択。

(6) /opt/jwd/bin/taro
一太郎が起動する。うおーーーー、Linuxで本当に一太郎が動いている!! 感動。
んが、xwdでスクリーンショットを取ろうとすると、エラーで落ちてしまう。wineとの相性か? なのでスクリーンショットが取れず。


まぁこれで使えるようになったよ。

しかし、辞書ファイルがあっさり壊れたのにはちと参ったやね。ちなみにLinux版では、辞書ファイルは
/var/opt/atokx2/users/(ユーザ名)/atok17u[1-4].dic
になる。

| | コメント (0) | トラックバック (0)

2004.12.04

VineLinux 3.1CR 設定メモ

まぁVineLinux 3.1CRをとりあえずカリカリと使っておりますが、いい感じですよ。
色々と設定して、問題は全部解決したのでまとめさー

§環境
Panasonic Let's note CF-B5ER
KXL-CB30AN (外付けUSBなCD-ROMドライブ)

§インストーラ
KXL-CB30ANから問題なく起動。
サウンドカード(AC'97)やビデオ(ATI Rage Mobility)も全部自動認識してくれたよ。超楽チン。

§インストール後の設定
*X上でCtrlとCAPSを入れ替える
/etc/X11/xorg.confのInputDeviceセクションに、

        Option  "XkbOptions"    "ctrl:swapcaps"

を追加。

*コンソールでCtrlとCAPSを入れ替える
rootでsetupコマンドを実行し、キーマップでJP106_Ctrl_Capsを選択する。

*USBマウス
刺すだけで認識。

*CD-ROMドライブ
KXL-CB30ANも刺すだけで認識。

*パッケージのインスコ
まぁとりあえず、目に付いたものを何も考えずに付属CD-ROMからインスコした。
今回のバージョンからWindowMakerはVinePlus行きという扱いに。ひでぇ。WindowMaker以外を使う気にはなれないですよ

*monaフォントインスコ
モナーフォントのrpmを拾ってきて入れる。
新しいのはrpmが無かったので、メンドいからmonafont-2.22を入れた。

*firefox
firefoxのtar玉を拾ってきて、インストーラを起動するだけ。インストール先は
/usr/local/firefox
が適当かと。

漏れはアンチエイリアス嫌いなので、firefoxのprefs.js に
user_pref("fonts.xft.enabled", false)
を追加。こうして表示フォントをmonaフォントにすれば、やっと落ち着ける。

あと、アイコンファイルを /usr/share/pixmaps に放り込んでおく

*Emacs
デフォルトだと、80字以上になると自動改行するために禿げ上がるほどウザい。
~/.emacs.el の

;;; 一行が 80 字以上になった時には自動改行する
;(setq fill-column 80)
;(setq text-mode-hook 'turn-on-auto-fill)
;(setq default-major-mode 'text-mode)

をコメントアウト。

xemacsは、~/.xemacs.el, ~/.xemacs.d/init.el の両方からコメントアウトする。

*ATOK X
付属のインストーラでrpmインストールした後に、ジャストシステムが配布しているパッチを当てる。
その後、setimeコマンドを使って
$ setime atokx

これだけでCtrl+Spaceで使えるようになるハズ……なのだけど、Emacsでは何故か

File error: "Cannot open load file", "un-define"

と言われて使えなかった。
  1. ~/.Xresources に
    Emacs*useXim: True を追加
  2. ~/.emacs.el の (if (equal emacs-ime "atokx") の中の、
    (require 'un-define)
    (require 'iiimcf-sc)
    をコメントアウト

で使えるようにはなったけど、どんな副作用があるのかはわからん

あ、ATOKの「ローマ字カスタマイズ」でxaとかxuを全部消去して、「x」→「ー」と追加するのは基本中の基本ね。長音入力はx、これ最強。

| | コメント (2) | トラックバック (1)

2004.11.28

VineLinux 3.1CR

何か小包がと思ったら、VineLinux 3.1CRキター!!
20041127vine.JPG
まぁVine信者の漏れとして、早速ノートにインスコしましたよ。特に目立つ変なことは無い……かな? まぁそのうちレビューを書きますyo

っつーかビックリしたんだけど、この小包、どこにも封印が無かったのだよ。だから箱を開けて、中身だけ抜いてそのまま閉めるってことが普通にできるの。マjでビビった。
VineLinuxは、今はハンコムリナックス社と組んで販売はハンコムが一括しているんだけど、これが以前から微妙だと思ってるんだよなぁ……

なんでそもそもVineがハンコムリナックスなんぞと組むようになったのか知らないんだけど、もうVineはさっさとあんな会社と手を切った方がいいんじゃないかニャー。前の日記にもチラリと書いたけど、「ただいまメンテナンス中です」を1年以上平気で出し続けていた会社だしさ。通販のシステム自体も激しく微妙だし。
そもそも、なんでオンラインで申し込んだのに、手書きの伝票が来たのだろうか……

まぁVineは物はいいのに、販売で損しているんじゃなかろうかってことっす。以上

| | コメント (0) | トラックバック (0)

2004.11.02

年を取ったのだよ

先日にノートPCのOSをFreeBSD 4.10-RELEASEに戻したと書いたのだけど
20041103kde.png
やっぱりVineLinux 3.0に戻してしまった。

去年までは時間あったし、日本語環境をイチから構築すること自体が楽しかったのだけど、今となってはそれが苦痛でしか無いことに気がついてしまって愕然。これが年を取るということなのか……

まぁあれだよ、日本人ならVineだよVine、何しろ楽チンだし。

| | コメント (0) | トラックバック (0)

2004.10.30

トラックボールはどこだ

ようやく時間が出来たので、ノートPCのOSを入れ替えた(VineLinux 2.6r3 → FreeBSD 4.10-RELEASE)。
しかし、会社で使っているマシンの速度に慣れてしまっているせいか、やたらと重く感じる。これ買ったときはあり得ないほどに高スペックだったのになぁ……(Panasonic Let's note CF-B5ER。PentiumIII/650MHz, RAM 196MB)。なんか寂しいな
松下が新しいトラックボールなノートPC出してくれれば速攻で買い換えるのだけど、今のラインナップにはどこにもトラックボールが無い。結局、いつまで経ってもノートPCを買い換えることができないのら

Appleも、昔はPowerBook Duoでトラックボールのノート出してたんだから、トラックボールなiBook出してくれればいいのに。タッチパッドなんていう糞インタフェースをとっとと捨ててさ。
そういう所にこだわるハズのAppleが、まだタッチパッドなんて使ってるのが不思議なんだな。Jobsに直訴したいよ

まー口の悪い漏れに言わせれば、「タッチパッドなんて付けてるノートPCはゴミです」と。

| | コメント (0) | トラックバック (0)

2004.09.28

ATOK for Linux、今度こそ本当に出る……のか?

ジャストシステムのプレスリリースによると、ようやくATOK X for Linuxの次バージョンが発売されるらしい

*「一太郎 for Linux」「ATOK for Linux」を12月22日(水)発売
http://www.justsystem.co.jp/news/2004l/news/j09281.html

長かったなぁ……ATOK X、もう何年間使い続けただろうか。
んが、実はジャストシステム、去年もこんな大嘘を言っているのだ。

*ジャストシステム、Linuxデスクトップ製品を市場投入
第1弾として「一太郎 for Linux」「ATOK16 for Linux」を提供

上記のプレスリリースによると、実は去年の年末にはATOK16 for Linuxを出すと言っていたのだ。
はっきり言って、もう待ちくたびれてしまった。3年以上も待っているから、また延期されても別に驚かないけど。

| | コメント (0) | トラックバック (0)

2004.09.25

VineLinux 3.1マダー?

FreeBSDラブなBSD信者の漏れではありますが、Linuxを使うときはやはりメンドくさくないVineLinuxを去年まで愛用しておりました
残念ながら会社はそこら中RedHatだらけで、アレでナニなんですけど

先日やっとこさVineLinux 3.0がリリースされて、これで製品版が出たらカンパのつもりで買おうと思っていたのですが一向に出る気配が無い。9月下旬とかいう話をどこかで読んだ記憶があるのですが、妄想だったのかニャー

それより心配なのが、おそらく通販を行うHancomLinux。ここ、なんというか明らかにやる気の無い会社なんだよなぁ。今アクセスすると「一時休止いたしております」というメッセージが表示されるのだけど、実はこの状態でかれこれ半年以上は放置されているのだ。いったいどんな会社なんだろうか。

まぁつまり、Sun SPARCStation 5でもバリバリ動いていたVineLinux萌えってことです。
しかし先行きは不安

| | コメント (0) | トラックバック (0)

2004.08.23

firefoxはEmacsキーバインド

なんか今さら気が付いたのだけど、Linux版のfirefoxは、テキストボックスへの入力時にEmacsキーバインドになっている!

Ctrl+a : 行頭
Ctrl+e : 行末
Ctrl+f : →
Ctrl+b : ←
Ctrl+k : 行末まで削除

すげー。道理で、Windowsと同じつもりでCtrl+A押しても「全てを選択」にならなかったわけだ。

これを知ってから激しく使いやすくなった。Linux版firefox最強。

| | コメント (2) | トラックバック (0)