シェルスクリプトを勉強しています。

ある程度、読み書きができるようになったと思い、力試しのため、
/etc/init.d/vsftpd
を読んでみました。

だいたいは理解できたのですが、一箇所、よくわからない部分があります。

実行結果:
# /etc/init.d/vsftpd start
vsftpd 用の vsftpd を起動中: [ OK ]

と出力されるのですが、スクリプトファイル内のstart関数は、

start() {
(略)
echo -n $"Starting $prog for $site: "
(略)
}

となっています。(vsftpd-2.0.1-5 CentOS)

そのため、
# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd: [ OK ]

と出るはずなのではないでしょうか?

echo -n $"Starting $prog for $site: "
の"の前の$がポイントのような気もするのですが、
どのような意味を持つのかがわかりません。
($を削除して実行してみたら、英語表記になりました)

なぜ、$の有無によって日本語/英語が切り替わるのでしょうか?
また、
○○用の○○を起動中 [ OK ]
という文字はどこで定義されているのでしょうか?

よろしくお願いいたします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2006/10/25 23:04:24
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:Kumappus No.1

回答回数3784ベストアンサー獲得回数185

ポイント50pt

手元にCentOSの環境がないので、国際化対応の文字データ(.poファイル)の実体の場所がよくわからないですが、bashの「スクリプト内メッセージのカタログ化」機能によってそのように表示されています。

http://www.unixuser.org/~ysjj/bash_script_i18n.html

id:hina1981

ありがとうございます。

まだ、ざっとしか読んでいませんが、文字の自動変換の仕組みがあるのですね。

とりあえず、

/usr/share/locale/ja/LC_MESSAGES

に、.moファイルがあることを確認しました。

この件について、もう少し勉強してみます。

2006/10/25 15:41:45
id:kurukuru-neko No.2

回答回数1844ベストアンサー獲得回数155

ポイント50pt

Bashは、A#1の回答のURLにあるので

GetText及び内容の確認について。


GetText

http://ja.wikipedia.org/wiki/Gettext

GetText解説

http://ring.atr.jp/archives/doc/gnu-info-j/gettext/gettext-ja.ht...

定義されている内容の参照方法

cd /usr/share/local/ja/LC_MESSAGES

msgunfmt initscripts.mo

id:hina1981

ありがとうございます。

ざっと目を通しました。

.poファイルについての説明ですね。

また、時間があるときに読んでみたいと思います。

2006/10/25 23:03:55

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません