Saya tidak dapat menemukan .bash_profile di ubuntu

67

Saya tidak dapat menemukan .bash_profiledi Ubuntu 14.04 di /home/userdirektori saya . Saya menggunakan ls -aperintah untuk melihat .bash_profile, tetapi tidak ada file seperti itu.

Roledenez
sumber
1
Anda harus menggunakannya ~/.profilesebagai gantinya.
muru
2
kemungkinan duplikat dari saya tidak dapat menemukan .bash_profile
Alaa Ali
1
Sangat umum bahwa beberapa file konfigurasi (atau bahkan direktori) tidak ada. Dalam hal ini perangkat lunak yang harus membacanya akan menggunakan konfigurasi default dan / atau membaca sumber lain untuk mengambil konfigurasi. Jika Anda ingin memodifikasi file konfigurasi yang tidak ada cukup buat dulu.
Bakuriu

Jawaban:

84

Ubuntu menggunakan ~/.profile.

Anda dapat membuatnya .bash_profiledi Ubuntu tetapi .profiletidak akan dibaca.

Jika kita membaca konten profil.:

cat ~/.profile

keluaran

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

Jadi gunakan ~/.profilesaja~/.bash_profile

nux
sumber
profil tidak bekerja untuk saya. Saya harus mengedit .bashrc vim ~/.bashrclalu. ~/.bashrc
Nahid
Menggunakan .bash_profile tidak berfungsi di Ubuntu. Ini menggunakan Dash sebagai shell login GUI, bukan Bash, jadi bash_profile tidak dibaca.
Jonathan Hartley
Jika Anda mengedit profil., Anda harus keluar dan kembali lagi untuk melihat perubahannya.
Jonathan Hartley
8

Saat menjalankan bash shell login akan mencari file konfigurasi dalam urutan ini:

[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile

Setelah menemukan yang pertama, ia berhenti mencari yang lain sehingga jika ada .bash_profiledi $HOMEbash saya tidak akan mencari .bash_logindan .profilelagi.

Dari ketiga nama file ini, Ubuntu secara default menggunakan .profileAnda dapat mengubah nama menjadi .bash_profilejika Anda suka:

mv ~/.profile ~/.bash_profile

Sekarang jika kita membuka shell bash baru menggunakan bash -l, su - $USER, sudo -u $USER -iatau perintah lain yang berjalan pesta sebagai shell login, ~/.bash_profileakan mendapatkan bersumber.

Perlu diperhatikan:

Apa yang saya bicarakan sampai sekarang hanya berlaku untuk Bash sendiri, ketika Anda masuk ke sistem dari GUI, manajer tampilan bertanggung jawab atas sumber file yang benar.

Ubuntu menggunakan gdm3sebagai pengelola tampilan, jika kita melihat: /etc/gdm3/Xsessionkita dapat melihat bahwa tidak ada file yang akan bersumber kecuali .profile::

# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
  if [ -f "$file" ]; then
    source_with_error_check "$file"
  fi
done

jadi jika Anda menggunakan GUI untuk masuk, simpan file dengan .profilenama lain jika tidak, Anda mungkin kehilangan beberapa variabel dan pengaturan di lingkungan Anda.

Saya kira opsi yang lebih baik adalah membuat symlink ke .profile:

ln -s ~/.profile ~/.bash_profile

Sekarang data Anda tinggal .profile, gdmtidak ketinggalan apa pun, bash load .bash_profileyang sebenarnya .profile, dan dengan mengedit masing-masing Anda mendapatkan hasil yang sama.

Profil. Hilang?

Jika Anda belum memilikinya, .profileambil salinannya dari sini:

cp /etc/skel/.profile ~/.profile

atau

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile
Ravexina
sumber
Tetapi, jika Bash mencari ~ / .bash_profile terlebih dahulu, lalu mengapa ia tidak melakukan ini di Ubuntu? Sudahkah Ubuntu memodifikasi Bash? Ini sepertinya aneh. man bashdi Ubuntu masih menjelaskan bagaimana ia akan mencari .bash_profile terlebih dahulu.
Jonathan Hartley
Terlihat .bash_profile pertama tidak dapat menemukannya (karena tidak ada) kemudian mencari .bash_logintidak dapat menemukannya lagi (karena Ubuntu tidak menggunakan dua nama ini) akhirnya mencari .profiledan ya itu ada. Jadi jika Anda membuat .bash_profilein ~maka Anda menimpa ubuntu ~/.profile, itu adalah perilaku default bash, tidak ada yang diubah di sini.
Ravexina
Benar, itu yang saya pikirkan pada awalnya juga! Dan apa yang Anda gambarkan TIDAK terjadi di RHEL. Tetapi di Ubuntu, tidak. Jika saya membuat .bash_profile, itu tidak dibaca. Saya baru menyadari bahwa ini karena Ubuntu tidak lagi menggunakan 'Bash' sebagai shell login GUI. Ini menggunakan 'Dash' sebagai gantinya. Saya pikir ini sudah benar sejak sekitar 18,04.
Jonathan Hartley
Anda kehilangan poin di sini. Sebenarnya kita berbicara tentang bash itu sendiri, apa yang saya katakan di sini adalah bahwa Ubuntu membuat '. Profil' dan bukan yang lain, jadi jika kita membuka bash shell baru (shell login) yang merupakan urutan membaca file-file ini, bukankah t peduli distro apa yang kita gunakan. :)
Ravexina
Jika pembaca mengganti nama .profile menjadi .bash_profile seperti jawaban Anda, maka untuk orang-orang di Ubuntu, file itu tidak akan dibaca saat login, atau saat membuka terminal. Anda telah merusak sistem mereka. Satu-satunya cara file itu akan dibaca adalah jika mereka meluncurkan sesi bash dengan argumen '--login' untuk secara eksplisit menjadikannya shell login. Itu tidak akan pernah terjadi secara otomatis di desktop mereka.
Jonathan Hartley
5

Itu berarti file tersebut tidak ada. Tapi, Anda bisa membuat file dan bashmengeksekusi / sumber file jika bashdipanggil sebagai shell login. Jadi, sesaat Anda login melalui shell (misalnya via ssh).

Jika Anda ingin konten dieksekusi setiap kali Anda membuka terminal, maka Anda harus memodifikasi .bashrcfile.

kekacauan
sumber
dapatkah Anda mengetahui mengapa file .bash_profile tidak ada?
Roledenez
Anda dapat menyalinnya dari /etc/skel/direktori.
Frantique
Ini desicion desain kanonik. Tapi, bukan berarti tidak bisa melakukannya.
chaos
Saya menjelaskan alasannya .bash_profiletidak ada (dan tidak berfungsi) di Ubuntu dalam komentar pada jawaban lain.
Jonathan Hartley
2

Jawaban teratas untuk digunakan ~/.profilebukannya ~/.bash_profiletidak berfungsi untuk saya.

Memodifikasi .bashrcberhasil

Hanya:

vim ~/.bashrc

Catatan: Saya menggunakan Ubuntu WSL.

cryanbhu
sumber
Di Linux asli, profil. Diterapkan ketika Anda login ke GUI, atau menghubungkan dari jarak jauh, atau masuk ke konsol, yaitu setelah menekan ctrl + shift + F2. Seharusnya mewakili saat pertama kali Anda login ke mesin, membuat shell yang merupakan induk dari semua proses lain yang Anda buat. Saya menduga bahwa di WSL, tidak ada hal seperti ini, jadi profil Anda mungkin tidak pernah dibaca.
Jonathan Hartley
sama untuk ku. ~/.profiletidak dimuat secara default di ubuntu 18.04
javapowered
0

Jika Anda maksud .bashrc Anda akan menemukannya di folder rumah Anda. Jika tidak ada, Anda dapat menyalinnya dari folder / etc / skel ke folder home Anda.

Jika Anda memerlukan informasi lebih lanjut tentang hal ini, silakan kunjungi halaman stefaan lippens.

http://stefaanlippens.net/bashrc_and_others

Berbohong
sumber