Bash tidak memuat '.profile' di sesi baru di Linux
Saya sedang menyiapkan mesin Linux baru yang saya dapatkan dari departemen TI kami, dan mengetahui bahwa mesin .profiletersebut tidak dimuat ketika saya memulai sesi terminal baru. Shell saat ini adalah Bash , meskipun saya mengubahnya dari sh default yang disertakan. Bagaimana cara membuatnya dimuat .profilesaat memulai?
Saya mengakses shell melalui SSH : ssh myusername@remotemachine. Saya memiliki hak administrator untuk itu.
Jawaban
Saat Bash dimulai sebagai shell login interaktif, salah satu file yang mungkin diprosesnya adalah ~/.profile.
Ketika itu dimulai sebagai shell non-login interaktif, itu tidak. Ini memproses /etc/bash.bashrc(jika file itu atau file serupa diaktifkan di versi Bash Anda) dan ~/.bashrc.
Anda dapat menambahkan yang berikut ini ke Anda ~/.bashrc(tapi hati-hati dengan loop atau nilai yang berubah secara tidak sengaja):
. $HOME/.profile
Ini tergantung bagaimana Anda memulai cangkang Anda. Seperti yang dikatakan orang lain, shell login akan memuat profil Anda (akan mencari .bash_profile terlebih dahulu, kemudian akan mencoba .profile). Jika menemukan salah satunya, ia akan memuatnya. Shell non-login (baik interaktif maupun non-interaktif) akan menjadi sumber .bashrc.
Saya sarankan untuk memasukkan semuanya ke dalam .bashrc. Pemisahan .profile / .bashrc agak sewenang-wenang dan lebih masuk akal di masa lalu UNIX ketika tty bukan hanya nama perangkat dan berarti TeleType yang sebenarnya. Itu dimaksudkan untuk memulai hal-hal tertentu (seperti memeriksa email) pada login 'utama' ke server, dan hanya hal-hal pengaturan normal untuk shell lain. Di kebanyakan Linux Anda akan masuk sekarang, Anda tidak benar-benar masuk ke shell, karena Anda masuk ke beberapa antarmuka grafis (KDE, gnome, CDE 'shudder'). "Proses masuk bibit" sekarang ditangani oleh manajer sesi Anda. Ini jauh lebih tidak relevan sekarang.
Saran saya: Buatlah profil. Anda hanya terdiri dari:
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
sebagai baris pertama .bashrc, waspadai hal-hal aneh yang terjadi saat menjalankan skrip bash dengan melompat lebih awal:
[[ $- != *i* ]] && return