質問: このbashスクリプトがubuntuでエラーを出すのにosxではエラーを出さないのはなぜですか #!/usr/bin/env sh export $node_config_dir=/users/full/path/to/script/config cd /users/full/path/to/script /usr/local/bin/node main スクリプトはosxでローカルに実行されますが(ローカル環境のパスを調整した場合)、ubuntuでは次のようになります。./mtf_runner.sh: 2: export: : bad variable name cronを使用してスクリプトを実行したいので、node_config_dir環境変数を設定する必要がありますさらに、コマンドはosx(10.8.5)のcronで実行されますが、ローカルメールに次のように送信されます。line 2: export: `=/users/myname/node/development/tennistracker/config': not a valid identifier これは=の周りのスペースが原因である可能性があることを読みましたが、間違いなくスペースがありません
回答: 変数プレフィックスとして「$」を回避する使用法は正しいですが、別の違いがあります。 osxシステムでは、「sh」は「bash」です。つまり、ボーンタイプのシェルです。これは、macで次の操作を行うだけで確認できます。man sh ubuntuでは、「sh」は「ダッシュ」です。ダッシュはコーンタイプのシェルです。これは、「man」ページまたは次の手順で確認することもできます。ls -al /bin/sh したがって、スクリプトが両方のシステムで同じように動作することを確認する場合は、次のようにします。#!/usr/bin/env bash 通常の「sh」の代わりに。