チルダはシェル展開の一部です (bash、csh、zsh など)。 $HOME
変数はエクスポート可能で、特定のシェルから独立して使用できます。
シェルは ~
を置き換えます ユーザーのホーム ディレクトリ (update :または、他のユーザーのホーム ディレクトリ (~
の場合) /
以外の何かが続く )、ただし単語の最初の文字の場合のみ。
--with-libmemcached=~
~
あります 最初はそうではないので、シェルはそれをそのままにしておきます。
主な違いは次のとおりです:
cd /tmp
ls "$HOME" #works
ls "~" #nope
そのため、シェルで ~ を展開するのは、いくつかの状況でのみです。あなたの場合、Pythonスクリプトは単純にスクリプト内で〜を取得しました-展開された値ではありません.
~
単語の最初の文字であり、引用符で囲まれていない場合にのみ展開されます
$ echo "~"
~
$ echo foo~
foo~
$ echo ~
/home/guest
$ echo ~/foo
/home/guest/foo
~username
HOME
に展開されます username
の .
$ echo ~root
/root
$ echo ~invaliduser
~invaliduser
ファイル名を引用するには、 $HOME
を使用する必要があります またはサフィックスを引用
$ echo "$HOME/foo bar"
/home/guest/foo bar
$ echo ~/"foo bar"
/home/guest/foo bar
$ echo ~root/"foo bar"
/root/foo bar
「POSIX Tilde Expansion」の次の点に注意してください
<ブロック引用>チルダ展開の結果のパス名は、フィールド分割とパス名展開によって変更されないように、引用されているかのように扱われます。