Saya mengubah variabel "HOME" saya dan sekarang tidak dapat menemukan "~ / .bash_profile" untuk mengubahnya kembali

15

Saya bermain-main dengan variabel lingkungan di Mac saya, mencoba mempelajari cara menggunakannya dan saya menggunakan perintah nano ~/.bash_profiletempat saya kemudian menambahkan baris HOME=/Users/MyCompName/Desktopuntuk memperbarui variabel rumah saya.

Perubahan ini berhasil dan dapat dilihat ketika saya gunakan printenvuntuk melihat semua variabel lingkungan, tetapi ketika saya HOMEkembali, sepertinya saya tidak dapat menemukan ~/.bash_profilelagi. Kemana perginya?

Mat
sumber
9
Pada dasarnya ~berarti$HOME
el.pescado
6
... jadi jika Anda mendefinisikan ulang $HOME, ~akan didefinisikan ulang juga
el.pescado

Jawaban:

32

Itu di tempat yang sama.

Sebelum perubahan ~diperluas menjadi seperti /Users/YourUserName, shell menemukan Anda di .bash_profilesana. Setelah file bersumber, ~memperluas ke jalur lain sehingga ~/.bash_profiletidak lagi menunjuk ke file yang relevan. Ini karena dalam konteks ini ~berarti $HOME.

Jika Anda mengetahui path lengkap ke direktori home Anda yang sebenarnya, Anda dapat menggunakannya sebagai gantinya ~. Di Mac mungkin akan terlihat seperti ini:

nano /Users/YourUserName/.bash_profile

Atau biarkan Bash Anda mencari direktori home Anda di database pengguna daripada hanya melihat $HOME. Ini tidak mengharuskan Anda untuk mengingat apa pun:

nano ~YourUserName/.bash_profile

Memodifikasi HOMEvariabel Anda tanpa mengubah direktori home Anda yang sebenarnya bukanlah ide terbaik. Mengubah direktori home pengguna mana pun adalah tugas administratif, biasanya pengguna biasa tidak dapat melakukan ini.

Kamil Maciorowski
sumber
Luar biasa saya bisa menemukannya lagi terima kasih! Maukah Anda menguraikan apa yang Anda maksud dengan "setelah file diperoleh"? Saya tidak terbiasa dengan apa artinya mendapatkan file bersumber
Matt
6
@Matt .bash_profilememiliki bentuk skrip Bash. Anda dapat menjalankan skrip atau sumbernya. Menjalankan berarti membuat subkulit dan menjalankan skrip baris demi baris di sana. Sumber berarti mengeksekusi skrip di shell saat ini . Beberapa tugas yang dimaksudkan untuk mempengaruhi shell saat ini tidak dapat dijalankan dalam subkulit; mengubah variabel untuk shell saat ini adalah salah satunya. Itu sebabnya beberapa file bersumber, tidak dieksekusi dalam subkulit. Untuk sumber menggunakan file secara manual . file( .ditentukan oleh POSIX) atau source file( sourceadalah ekstensi non-POSIX dipahami oleh beberapa shell).
Kamil Maciorowski
2
Jika Anda (Matt) tidak tahu di mana direktori home Anda dulu, Anda bisa menggunakannya nano ~YourUserName/.bash_profile. Ini akan mencari direktori home Anda di basis data pengguna daripada hanya melihat $ HOME.
Stig Hemmer
1
@StigHemmer Jawabannya sekarang adalah komunitas wiki. Komentar Anda yang berguna telah berasimilasi. Terima kasih.
Kamil Maciorowski