〜/ .bashrcでは、割り当ての=
記号の周りにスペースを入れてはいけないnot必要があることを知っています。
$ tail -n2 ~/.bashrc
alias a="echo 'You hit a!'"
alias b = "echo 'You hit b!'"
$ a
You hit a!
$ b
b: command not found
MySQL構成ファイル/etc/my.cnf
を確認していますが、次のことがわかりました。
tmpdir=/mnt/ramdisk
key_buffer_size = 1024M
innodb_buffer_pool_size = 512M
query_cache_size=16M
=
記号の周りのスペースに問題がないことをどのように確認できますか?
この質問は/etc/my.cnf
ファイルに固有のものではなく、一般的な* NIX構成ファイルに固有のものであることに注意してください。私の最初の傾向は= RTFMしかし、実際にはman mysql
は問題について言及しておらず、それぞれのケースでオンラインで狩りをする必要がある場合、どこにも行きません。規則や簡単な確認方法はありますか?ご覧のとおり、複数の人がこのファイルを編集しており(=
記号の規則が異なります)、すべてを強制することはできません。スペースを使用しないでください。また、構成されている可能性があり、正しい場合と正しくない場合があるすべてをチェックすることに夢中になることもできません。
EDIT:私が意図しているのは、現在構成されているファイルが適切に実行されるようにすることです。自分でファイルを構成するときは、パッケージメンテナがそこに置くものは何でも慣例に従います。
Bashは、テキストの後に=
が続く行を変数への割り当てとして解釈しますが、テキストの後にスペースが続く行を引数付きのコマンドとして解釈します。
var=assignment
vs command =argument
Bashスクリプトは、スクリプト内のすべてがコマンドラインに入力したかのように動作するという原則に基づいて機能します。
bash
(または別のシェル)によって解釈されない構成ファイルでは、構成ファイルの読み取りに使用されるパーサーによって決定されます。一部のパーサーはスペースを取りますが、一部は取りません。その場合はアプリケーション次第です。個人的には、デフォルトの構成ファイルで使用されている規則を使用します。
.bashrcは、my.cnf、php.ini、httpd.conf、またはlaunchd plistと同様に、bashの構成ファイルにすぎません。それぞれに独自の構文があり、bashのスペースなしの割り当てから、launchdのXMLタグスープまでさまざまです(バイナリバージョンもあります:-O)
確固たる慣習はなく、Unixのプライムディレクティブをすでに発見しています。Fineマニュアルを読んでください。
一部のプログラムは、構成ファイルのチェックを提供します。次に例を示します。
postfix check
それ以外の場合は、リポジトリから元の構成ファイルを取得し、それらを現在のdiffと比較することができます。
bash
で代入を行う場合、=
記号の前後のスペースは常に問題になります。例外はありません。bash
で有効な単純な割り当て(展開なし、算術なし、配列割り当てなし)を取得する場合は、=
の周りのすべてのスペースを削除する必要があります。
構成ファイルの場合、各ソフトウェアには構成ファイルを解析するための独自のパーサーがあるため、bash
には関係がありません。構成ファイルで許可されている構文を知るには、ドキュメントを読む必要があります。
例はmysql
で、その初期化スクリプト/etc/init.d/mysqld
には、my.cnf
のパーサーがあります。
# Try to find basedir in /etc/my.cnf
conf=/etc/my.cnf
print_defaults=
if test -r $conf
then
subpat='^[^=]*basedir[^=]*=\(.*\)$'
dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf`
for d in $dirs
do
d=`echo $d | sed -e 's/[ ]//g'`
if test -x "$d/bin/my_print_defaults"
then
print_defaults="$d/bin/my_print_defaults"
break
fi
if test -x "$d/bin/mysql_print_defaults"
then
print_defaults="$d/bin/mysql_print_defaults"
break
fi
done
fi