BASHの使用:答えは明らかですが、私には効果がありません。
> echo $PWD
/root/fcm
> readlink -f ~
/root
> # but then with a variable or literal
> a='~'
> readlink -f $a
/root/fcm/~
> readlink -f "~"
/root/fcm/~
bashやreadlinkを置き換える人は '/root/'だけを受け取ると予想されます。
答え1
シェルはチルダ拡張を実行します。readlink
いいえ。Bashは引用符の中にチルダを拡張しません。。
readlink -f $a
変数拡張の前にチルダ拡張が行われるため、目的の操作は実行されません。つまり、変数はに拡張されますが、~
チルダはもはや拡張されません。
Bashが操作を実行する順序は、中括弧拡張、チルダ拡張、パラメータおよび変数拡張、コマンド置換、算術拡張、トークン化、パス名拡張です。
場合によっては、$HOME
チルダを使用することは他の変数のように動作するため、チルダを使用するよりも優れている可能性があります。
また、rootとしてログインしないでください...