Ada garis di ~/.profile
mana
PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
Saya tidak yakin tentang yang terakhir i
.
- Haruskah saya menghapusnya ??
- Bukankah ini kesalahan sintaksis ??
bash
environment-variables
Tersenyum
sumber
sumber
$PATH
variabel lingkungan, tetapi mereka bukan duplikat sama sekali. Paling-paling, mereka terkait. Pertanyaan ini adalah masalah di~/.profile
mana kebetulan merupakan karakter tambahan di baris di mana$PATH
lingkungan ditugaskan.PATH=
garis dalam~/.profile
seharusnya terlihat valid - yang merupakan pertanyaan sebenarnya di sini.Jawaban:
Tidak, ini bukan kesalahan sintaksis; itu hanya surat yang ditambahkan setelah ekspansi
$PATH
, karena shell menghapus tanda kutip ...Jadi, serta menambah direktori lokal, ia secara efektif menghilangkan yang ada
/snap/bin
dari PATH saya, dan menambahkan yang tidak ada/snap/bini
.Anda dapat menghapus
i
untuk memperbaiki PATH Anda.Untuk melihat perubahannya, Anda harus keluar dan kembali atau menjalankan
source ~/.profile
shell yang Anda gunakan (atau meluncurkan shell denganbash -l
), karena.profile
hanya dibaca oleh shell login saja.Jika Anda tidak membuat perubahan ini untuk Anda
.profile
sendiri, Anda mungkin ingin mengembalikan file default dengan menjalankanIni mengganti nama yang lama
.profile
.profile.old
(Anda juga bisa menghapus file jika Anda mau) dan menggantinya dengan versi default untuk sistem Anda/etc/skel
.sumber
Saya pikir di sini tidak jelas apa arti ungkapan berikut:
Bagian pertama
PATH=
berarti kita menetapkan nilai baru ke variabel (lingkungan)$PATH
.Bagian kedua adalah nilai baru dari variabel itu. Dalam kasus saat ini, variabel
$HOME
akan diperluas dengan nilai saat ini dan ke nilai itu akan ditambahkan string/bin:
. Hal yang sama berlaku untuk bagian selanjutnya dari string$HOME/.local/bin:
. Akhirnya nilai$PATH
variabel saat ini (sebelumnya) akan diperluas dan ditambahkan. Usus besar:
memainkan peran pembatas dalamPATH
ekspresi.Tujuannya adalah akhirnya menulis:
PATH=<some additional paths>+<the the current value of $PATH>
. Kami menempatkan jalur tambahan ini di depan string, karena kami ingin shell untuk mencari executable terlebih dahulu di lokasi ini dan hanya kemudian di seluruh sistem.Karakter
i
tidak perlu. Ini akan ditambahkan ke nilai baru$PATH
dan akan membuat berantakan, seperti @Zanna menjelaskan dalam jawabannya .sumber
Ya itu adalah kesalahan sintaksis, yang sebenarnya
.profile
akan terlihat seperti ini kecuali jika Anda mengubah keadaan (ini adalah versi 17.10, lihat catatan di bawahnya):Ini mungkin terlihat berbeda di versi Ubuntu yang lebih lama di mana pemeriksaan apakah
bin
direktori pengguna ada tidak dimasukkan ke dalam.profile
. Cara termudah untuk memeriksa bagaimana seharusnya terlihat adalah dengan melihatnya/etc/skel/.profile
.Jadi untuk menambahkan saat Anda bertanya dalam komentar Anda cukup letakkan ini di akhir file profil Anda:
Jika Anda benar-benar mengacaukan profil Anda, ada salinan tempat Anda bisa mendapatkan yang baru
/etc/skel/
.sumber
/etc/skel/.profile
pada 16,04 terlihat berbeda, tanpa tes apakah"$HOME/bin"
ada. Bahkan jika itu adalah varian yang lebih baik (IMO), tampaknya telah diubah kembali pada 17.10 - karena suatu alasan atau karena kesalahan.