人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

シェルスクリプトを勉強しています。
ある程度、読み書きができるようになったと思い、力試しのため、
/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 ]
という文字はどこで定義されているのでしょうか?

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

●質問者: hina1981
●カテゴリ:コンピュータ
✍キーワード:2.0 CentOS echo ETC Prog
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● くまっぷす
●50ポイント

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

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

◎質問者からの返答

ありがとうございます。

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

とりあえず、

/usr/share/locale/ja/LC_MESSAGES

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

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


2 ● kurukuru-neko
●50ポイント

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

◎質問者からの返答

ありがとうございます。

ざっと目を通しました。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ