Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Sumber pengguna Linux .bashrc atau .profile tidak dapat mencari fail, cara menyelesaikannya
Saya pernah mengalami situasi ini dalam debian sebelum ini. Pengguna yang baru ditambah log masuk setiap kali Laluan semua menunjukkan bahawa sh-42$ memerlukan nama pengguna su untuk kembali kepada normal, dan tiada cara untuk mendapatkan .bashrc dan fail konfigurasi lain dalam direktori pengguna, menyebabkan beberapa masalah.
Jika ini berlaku, kemungkinan besar shell permulaan lalai Linux adalah salah Tukar su kepada pengguna super dan gunakan vi /etc/passwd untuk melihat shell permulaan pengguna yang sepadan dan bandingkan. ia dengan cangkerang permulaan pengguna biasa yang lain , jika mereka berbeza, ubah suai mereka menjadi sama. .
Contohnya, jika shell pengguna normal lain ialah /bin/bash dan shell pengguna abnormal ialah /bin/sh, tukarkannya kepada /bin/bash.
Bash Shell menggunakan beberapa fail permulaan untuk menetapkan pembolehubah persekitaran ini ialah shell itu sendiri dan Pengguna sistem menentukan konfigurasi shell bash tertentu, dalam artikel ini kita akan memahami perbezaan antara .bashrc .bash-profile dan .profile.
Bash menyediakan dua pilihan mod dalam cangkerang interaktif, log masuk dan bukan log masuk (log masuk dan bukan log masuk) .
Apabila kami log masuk ke sistem menggunakan ssh, kami mendapat shell log masuk interaktif, yang membaca fail permulaan apabila dipanggil.
Walau bagaimanapun, apabila kami memanggil shell baharu pada shell yang telah dilog masuk, kami mendapat shell interaktif bukan log masuk. Shell ini hanya melaksanakan fail .bashrc
Apabila shell tidak memerlukan sebarang campur tangan manusia untuk melaksanakan arahan, kami memanggilnya shell bukan interaktif. Contohnya, apabila skrip menghasilkan subkulit untuk melaksanakan perintah, subkulit adalah cangkerang bukan interaktif. Subkulit itu tidak melaksanakan sebarang fail permulaan Ia mewarisi pembolehubah persekitaran daripada cangkerang yang menciptanya.
Fail permulaan mengandungi arahan yang perlu dilaksanakan apabila shell bermula. Oleh itu, shell secara automatik melaksanakan arahan dalam fail permulaan ini untuk menyediakan shell. Proses ini berlaku sebelum arahan arahan dipaparkan.
3.1 Maksud .bash_profile
Fail .bash_profile mengandungi arahan untuk menetapkan pembolehubah persekitaran, jadi shell akan mewarisi pembolehubah ini.
Dalam shell log masuk interaktif, bash mula-mula mencari fail /etc/profile. Jika ditemui, bash akan membaca dan melaksanakannya dalam shell semasa. Hasilnya ialah /etc/profile menetapkan konfigurasi persekitaran untuk semua pengguna
Begitu juga, bash kemudian menyemak sama ada .bash_profile wujud dalam direktori rumah (direktori yang dimasukkan oleh cd ~). Jika ada, bash melaksanakan .bash_profile dalam shell semasa, dan Bash kemudian berhenti mencari fail lain seperti .bash_login dan .profile.
Jika bash tidak menjumpai .bash_profile, maka ia akan mencari .bash_login dan .profile mengikut urutan dan hanya melaksanakan fail pertama yang boleh dibaca.
Mari kita periksa contoh fail .bash_profile. Di sini kita menetapkan semula dan mengeksport pembolehubah PATH
echo "Bash_profile execution starts.." PATH=$PATH:$HOME/bin; export PATH; echo "Bash_profile execution stops.."
Sebelum log masuk secara interaktif ke command prompt shell, kita akan melihat output berikut
Bash_profile execution starts.. Bash_profile execution stops.. [example@example ~]$
3.2 Maksud .bashrc
.bashrc mengandungi arahan khusus untuk shell bash. Setiap shell bukan log masuk interaktif membaca .bashrc terlebih dahulu, dan secara amnya, .bashrc ialah tempat terbaik untuk menambah alias dan fungsi berkaitan bash.
Bash shell mencari fail .bashrc dalam direktori rumah dan menggunakan sumber untuk melaksanakannya dalam shell semasa.
Mari kita kenali fail .bashrc melalui sampel
echo "Bashrc execution starts.." alias elui='top -c -u $USER' alias ll='ls -lrt' echo "Bashrc execution stops.."
Sebelum gesaan arahan shell bukan log masuk interaktif, kita akan melihat output berikut
[example@example ~]$ bash Bashrc execution starts.. Bashrc execution stops.. [example@example ~]$
3.2 Maksud .profile
Semasa proses log masuk shell interaktif, jika .bash_profile tidak wujud dalam direktori utama, bash akan mencari .bash_login** dijumpai, bash akan melaksanakannya. Jika .bash_login tidak wujud dalam direktori rumah, bash mencari .profile dan melaksanakannya.
.profile boleh mengekalkan konfigurasi dengan .bash_profile atau .bash_login. Ia mengawal gesaan yang muncul, bunyi papan kekunci, cangkang mana yang hendak dibuka dan tetapan profil individu yang mengatasi pembolehubah yang ditetapkan dalam fail /etc/profile.
Bash shell akan melaksanakan .bash_profile setiap kali anda log masuk secara interaktif. Jika .bash_profile tidak ditemui dalam direktori rumah, bash akan melaksanakan fail boleh dibaca pertama yang ditemui daripada .bash_login dan .profile. Walau bagaimanapun, pada setiap permulaan shell bukan log masuk interaktif, bash mencipta .bashrc.
Biasanya, pembolehubah persekitaran akan dimasukkan ke dalam .bash_profile. Memandangkan shell log masuk interaktif ialah shell pertama, semua tetapan lalai yang diperlukan untuk persediaan persekitaran dimasukkan ke dalam **.bash_profile**. Oleh itu, ia ditetapkan sekali dan diwarisi dalam semua subkulit.
Begitu juga, alias dan fungsi juga akan dimasukkan ke dalam .bashrc Pastikan ini dimuatkan setiap kali anda melancarkan shell daripada persekitaran sedia ada.
Namun, untuk mengelakkan log masuk dan bukan log masuk. perbezaan tetapan shell interaktif. .bash_profile panggilan .bashrc. Oleh itu, kita akan melihat coretan kod berikut dimasukkan ke dalam **.bash_profile** supaya pada setiap shell log masuk interaktif .bashrc juga dilaksanakan pada shell yang sama:
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi PATH=$PATH:$HOME/bin export PATH
注意:
总而言之,在使用环境之前,shell需要其启动文件以配置shell环境。
在本文中,我们检查了各种shell模式。然后,我们了解了各种bash启动文件的重要性。最后,我们检查了这些启动文件之间的差异。
Atas ialah kandungan terperinci Sumber pengguna Linux .bashrc atau .profile tidak dapat mencari fail, cara menyelesaikannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!