コマンド ライン クライアントを呼び出すシェル スクリプトがありますmysql
。次のようになります。
$ cat ms
mysql --host=titanic --user=fred --password="foobar"
それは正常に動作します:
$ ./ms
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 810
...
ここで、スクリプトを git リポジトリに保持したいと思いますが、ユーザーとパスワードの詳細はありません。だから、私はファイルを持っていると思っSECRET
た: --host=titanic --user=fred --password="foobar"
git リポジトリに追加せず、ms
スクリプトを次のように変更します。
mysql $(cat SECRET)
残念ながら、うまくいきません。実行すると、次のエラーが表示されます。
$ ./ms
ERROR 1045 (28000): Access denied for user 'fred'@'example.com' (using password: YES)
理解できません。$(cat SECRET)
が評価/展開されると、 の単純な呼び出しとまったく同じに見えますmysql
。それでも、うまくいきません。対話型シェルで直接実行しようとすると、同じことが起こります。
$ mysql --host=titanic --user=fred --password="foobar"
正常に動作しますが、以下は動作しません:
$ cat SECRET
--host=titanic --user=fred --password="foobar"
$ mysql $(cat SECRET)
ERROR 1045 (28000): Access denied for user 'fred'@'example.com' (using password: YES)
$ echo mysql $(cat SECRET)
mysql --host=titanic --user=fred --password="foobar"
ここで何が起こっているのか、それを修正する方法について誰かが光を当てることができますか? よろしくお願いします。