GNU/Linux >> Linux の 問題 >  >> Linux

$HOME と '~' (チルダ) の違いは?

チルダはシェル展開の一部です (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」の次の点に注意してください

<ブロック引用>

チルダ展開の結果のパス名は、フィールド分割とパス名展開によって変更されないように、引用されているかのように扱われます。


Linux
  1. [[$ a ==Z*]]と[$a==Z *]の違いは?

  2. EotとEofの違いは?

  3. [0-9]、[[:digit:]]とDの違いは?

  1. GtkとQtアプリケーションの違いは?

  2. ブロックサイズとクラスターサイズの違いは?

  3. 配管とコマンド拡張の違いは?

  1. Sudoユーザーとrootユーザーの違いは?

  2. SnatとMasqueradeの違いは?

  3. NssとPamの違いは?