Menurut jawaban ini dan pemahaman saya sendiri, tilde diperluas ke direktori home:
$ echo ~
/home/braiam
Sekarang, setiap kali saya ingin ekspansi Shell berfungsi, mis. e. menggunakan nama variabel seperti $FOO
, dan jangan merusak karakter yang tidak diharapkan, spasi, dll. seseorang harus menggunakan tanda kutip ganda "
:
$ FOO="some string with spaces"
$ BAR="echo $FOO"
$ echo $BAR
echo some string with spaces
Mengapa ekspansi ini tidak berfungsi dengan tilde?
$ echo ~/some/path
/home/braiam/some/path
$ echo "~/some/path"
~/some/path
Jawaban yang Diterima:
Alasannya, karena di dalam tanda kutip ganda, tilde ~
tidak memiliki arti khusus, itu diperlakukan sebagai literal.
POSIX mendefinisikan Kutipan Ganda sebagai:
Mengapit karakter dalam tanda kutip ganda ( “”) akan mempertahankan
nilai literal semua karakter dalam tanda kutip ganda, dengan
pengecualian karakter tanda dolar, tanda kutip balik, dan garis miring terbalik,…
Aplikasi harus memastikan bahwa tanda kutip ganda didahului dengan
garis miring terbalik untuk disertakan dalam tanda kutip ganda. Parameter '@' memiliki
arti khusus di dalam tanda kutip ganda
Kecuali $ , ` , dan @ , karakter lain diperlakukan sebagai literal di dalam tanda kutip ganda.