Baris itu di Anda .profileharus menjadi salah satu
export PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH=$PATH:$HOME/Unix/homebrew/bin
PATH=$PATH:~/Unix/homebrew/bin
The ~karakter hanya diperluas ke direktori home Anda ketika itu karakter pertama dari sebuah kata dan itu kuotasi. Dalam apa yang Anda tulis, ~ada di antara tanda kutip ganda dan karenanya tidak diperluas. Bahkan jika Anda menulis export "PATH=$PATH:"~/Unix/homebrew/bin, ~itu tidak akan diperluas karena itu bukan pada awal kata shell.
Ada dispensasi khusus, yang dimaksudkan untuk menulis nilai untuk PATHdan variabel sejenis. Jika ~tepat setelah tanda sama dengan yang menandai tugas, atau jika ~hanya setelah tanda :di sisi kanan tugas, maka itu diperluas. Hanya tugas sederhana yang memiliki dispensasi ini, export PATH=…tidak masuk hitungan (ini adalah panggilan ke exportbuiltin, yang kebetulan memiliki argumen yang berisi =karakter).
Di sini, Anda tidak perlu mengekspor PATHkarena sudah diekspor. Anda tidak perlu menelepon exportsaat Anda mengubah nilai variabel (kecuali di shell Bourne lama yang tidak akan Anda temukan di OSX atau Linux). Juga, dalam tugas (sekali lagi, exporttidak masuk hitungan), Anda tidak perlu tanda kutip ganda di sisi kanan, jadi PATH=$PATH:~/Unix/homebrew/binaman bahkan jika $PATHberisi spasi.
whichtidak bersalah di sini; yang~seharusnya diperluas dalam definisiPATH. Ada keanehan di bash bahwa itu~tetap memperluasPATH, jadi dua kesalahan membuat hak, semacam.