env変数を追加しています/etc/environment
が、変数値に#記号が含まれているため、文字列がストライプされます。
MYSQL_PWD="something#no"
今、env
上記のコードを実行すると、yieldsになりMYSQL_PWD=something
ます。ハッシュをエスケープするにはどうすればよいですか?私はすでに\
キャラクターを試しました。
/etc/environment
。
env変数を追加しています/etc/environment
が、変数値に#記号が含まれているため、文字列がストライプされます。
MYSQL_PWD="something#no"
今、env
上記のコードを実行すると、yieldsになりMYSQL_PWD=something
ます。ハッシュをエスケープするにはどうすればよいですか?私はすでに\
キャラクターを試しました。
/etc/environment
。
回答:
これはで可能ではないよう/etc/environment
です。これは、シェルに依存しない変数の共通の場所として意図されています。これを考えると、ハッシュマーク(#
)を含む文字列をサポートしているようには見えず、それらをエスケープする方法がないようです。
このSF Q&Aタイトル「Linux etc / environmentで先頭の「#」文字を適切にエスケープする方法」を見つけました。。これらの方法はどれも機能しませんでした:
その質問に対する受け入れられた答えと私のアドバイスも何ですか:
まあ、それはあなたがやりたいトリッキーなもの
/etc/environment
はシェル構文ではなく、1つのように見えますが、そうではありません。背後/etc/environment
にあるアイデアは素晴らしかった。変数を設定するシェルに依存しない方法!わーい!しかし、実際的な制限により、役に立たなくなります。そこに変数を渡すことはできません。たとえば、試してみて
MAIL=$HOME/Maildir/
何が起こるか見てみましょう。悲しいかな、どんな目的にも使用しようとするのをやめるのがベストです。そのため、シェルで処理された場合にできると期待することはできません。
/etc/profile
またはを使用し/etc/bashrc
ます。
まだ別のQ&Aは、これがなぜそうなのかについてこの合理的説明を与えました:
/etc/environment
#(コメントとして扱われる)をエスケープする方法はありません。PAMモジュール "pam_env"によって解析され、KEY = VALペアの単純なリストとしてそれを処理し、それに応じて環境を設定します。これはbash / shellではなく、パーサーには変数の展開や文字のエスケープを行うための言語がありません。
/proc/environ
。
/etc/environment
か?Debian Wheezyでこの動作を再現できなかったからです。