Saat Anda masuk, file tersebut ~/.profile
dibaca oleh shell login (ksh untuk Anda). Anda dapat menginstruksikan shell login untuk menggantinya dengan bash. Anda harus mengambil beberapa tindakan pencegahan:
- Ganti shell login hanya jika interaktif. Ini penting: jika tidak, masuk dalam mode grafis mungkin tidak berfungsi (ini tergantung pada sistem: beberapa tetapi tidak semua sistem membaca
~/.profile
saat masuk melalui xdm atau serupa), dan idiom seperti ssh foo '. ~/.profile; mycommand'
akan gagal.
- Periksa bash yang tersedia, sehingga Anda masih bisa masuk jika eksekusi tidak ada karena alasan tertentu.
Anda punya pilihan apakah menjalankan bash sebagai shell login atau tidak. Satu-satunya perbedaan utama dalam membuatnya menjadi shell login adalah ia akan memuat ~/.bash_profile
atau ~/.profile
. Jadi, jika Anda menjalankan bash sebagai shell login, berhati-hatilah untuk memiliki ~/.bash_profile
atau berhati-hatilah agar tidak menjalankan bash secara rekursif ~/.profile
. Tidak ada keuntungan nyata dari ~/.profile
dieksekusi oleh bash daripada ksh, jadi saya sarankan tidak melakukannya.
Juga atur SHELL
variabel lingkungan ke bash, sehingga program seperti emulator terminal akan memanggil shell itu.
Berikut kode untuk beralih ke bash. Letakkan di akhir ~/.profile
.
case $- in
*i*)
# Interactive session. Try switching to bash.
if [ -z "$BASH" ]; then # do nothing if running under bash already
bash=$(command -v bash)
if [ -x "$bash" ]; then
export SHELL="$bash"
exec "$bash"
fi
fi
esac
Gilles 'SANGAT berhenti menjadi jahat'
sumber
.profile
hanya berfungsi untuk shell login (sesuai kebutuhan OP). Saya menggunakan Remote Desktop Connection Windows 10 untuk masuk ke workstation Linux, kemudian buka Terminal di gnome. Saya inginzsh
sementara sysadmin saya memberi sayabash
. Dalam hal ini, saya harus menambahkan cuplikan.bashrc
sebagai ganti.profile
.Ini sedikit kotor, tetapi Anda bisa
bash
menjadi shell yang Anda gunakan saat login dengan membuat.profile
file di direktori home Anda, yang mengandungIni akan menyebabkan
ksh
sesi diganti denganbash
sesi. Anda tidak perlu mengetikexit
(atau^D
) dua kali, seperti yang Anda lakukan jika Anda secara manual memulaibash
sesi baru setiap kali Anda masuk. Dan mengetikbahkan akan mengembalikan jalur ke
bash
.sumber
exec bash -l
.type
adalah dianjurkan lebihwhich
.bash
membaca.profile
sehingga menghasilkan loop tak terbatas? Saya setuju bahwa sesuatu sesuai denganexec bash
yang Anda inginkan, tetapi Anda harus memastikan bahwa Anda melakukannya hanya untuk login Anda ksh sehingga diperlukan beberapa pernyataan if!~/.bash_profile
atau~/.bash_login
Jawaban Giles harus memiliki tanda -l yang ditambahkan ketika menjalankan bash, sehingga setiap skrip profil login akan bersumber di bash shell baru. (Misalnya apa pun di /etc/profile.d/ di RHEL). Maka skrip harus:
sumber
-l
opsi? Saya telah menggunakan ini selama berbulan-bulan tanpa itu tanpa masalah.Jawaban untuk
csh/tcsh
terinspirasi oleh yang terpilih teratas oleh @Gilles adalahsumber
Solaris:
sumber