Bagaimana cara mengubah shell default saya menjadi bash jika saya tidak memiliki akses ke chsh atau / etc / passwd?
8
Saya sedang mengerjakan akun Linux jarak jauh universitas, dan shell defaultnya sayangnya cshtanpa penyelesaian tab. Bagaimana cara mengubah shell default akun saya bash? chshtidak tersedia.
Sistem apa yang digunakan universitas untuk menyimpan akun? ldapmodifymungkin bekerja.
user1686
Atau, jika mereka menggunakan NIS, ypchshharus menjadi perintah yang tepat.
m000
Jika Anda hanya ingin penyelesaian tab, Anda dapat menambahkan ini ke ~ / .cshrc set filecdan set autolist.
Hennes
Jawaban:
11
Anda mungkin harus mencoba menanyakan sysadmin Anda apakah mereka dapat mengubah shell default Anda untuk Anda. Jika mereka tidak bisa atau tidak mau (seperti halnya ketika saya masih kuliah), solusi yang saya gunakan adalah menambahkan
# Exec bash if using an interactive shell.if($?prompt)then
setenv SHELL /path/to/bash
exec $SHELL
endif
untuk .cshrc. (Pastikan untuk mengganti /path/to/bashdengan jalur nyata, tentu saja. Ini bahkan bisa menjadi versi bashyang berada di bawah direktori home Anda, jika versi yang disediakan sistem terlalu ketinggalan zaman untuk selera Anda.) Untuk efisiensi, yang terbaik adalah untuk melakukan ini sedini .cshrcmungkin, sehingga Anda menghindari .cshrcpemrosesan tambahan yang akan diperdebatkan setelah bashmenggantikan cshproses.
ssh -t yourhost exec -a bash -l bashuntuk mengganti shell asli sepenuhnya, daripada berjalan sebagai proses di dalam shell awal.
chepner
@ chepner: Menarik, saya menggunakan ssh -t host bashsolusi sederhana sendiri dalam situasi yang sama, tetapi cara Anda lebih baik. Saya belum memikirkan execsama sekali, terima kasih! Saya akan memperbarui posting dengan saran Anda.
Daniel Andersson
Saya mendapat sedikit fantasi, menggunakan argumen untuk bashperintah bawaan exec.
chepner
@ chepner: Ah ya, saya mencobanya sekarang di host dengan zsh sebagai shell default dan gagal pada keduanya -adan -l. Saya akan memodifikasi contoh dalam jawaban saya.
Daniel Andersson
0
Solusi terbaik yang saya temukan adalah satu di stackexchange. Inilah tautan stackexchange dan inilah solusinya:
buat file profil. Dir direktori home Anda dan rekatkan di berikut ini, atau tambahkan ke akhir file profil Anda jika Anda sudah punya.
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"fifiesac
saya banyak mencari ketika menggunakan otentikasi LADP Anda melalui PAM, saya pikir solusi terbaik adalah dengan memasukkan SHELL = / bin / bash exec / bin / bash ke dalam file .profile di direktori home pengguna Anda
ldapmodify
mungkin bekerja.ypchsh
harus menjadi perintah yang tepat.set filec
danset autolist
.Jawaban:
Anda mungkin harus mencoba menanyakan sysadmin Anda apakah mereka dapat mengubah shell default Anda untuk Anda. Jika mereka tidak bisa atau tidak mau (seperti halnya ketika saya masih kuliah), solusi yang saya gunakan adalah menambahkan
untuk
.cshrc
. (Pastikan untuk mengganti/path/to/bash
dengan jalur nyata, tentu saja. Ini bahkan bisa menjadi versibash
yang berada di bawah direktori home Anda, jika versi yang disediakan sistem terlalu ketinggalan zaman untuk selera Anda.) Untuk efisiensi, yang terbaik adalah untuk melakukan ini sedini.cshrc
mungkin, sehingga Anda menghindari.cshrc
pemrosesan tambahan yang akan diperdebatkan setelahbash
menggantikancsh
proses.sumber
Anda cukup terhubung dengan
untuk mengeksekusi Bash shell secara otomatis saat Anda masuk.
Dari komentar di bawah ini Anda dapat melihat alternatifnya
exec
akan menjalankan proses baru dan keluar dari yang lama, sehinggacsh
proses akan keluar secara langsung.Jika menambahkan
-l
pada akhir perintah sebagai argumen untuk Bash, itu akan diperlakukan sebagai shell login, tapi mungkin itu tidak diperlukan.sumber
ssh -t yourhost exec -a bash -l bash
untuk mengganti shell asli sepenuhnya, daripada berjalan sebagai proses di dalam shell awal.ssh -t host bash
solusi sederhana sendiri dalam situasi yang sama, tetapi cara Anda lebih baik. Saya belum memikirkanexec
sama sekali, terima kasih! Saya akan memperbarui posting dengan saran Anda.bash
perintah bawaanexec
.-a
dan-l
. Saya akan memodifikasi contoh dalam jawaban saya.Solusi terbaik yang saya temukan adalah satu di stackexchange. Inilah tautan stackexchange dan inilah solusinya:
buat file profil. Dir direktori home Anda dan rekatkan di berikut ini, atau tambahkan ke akhir file profil Anda jika Anda sudah punya.
sumber
saya banyak mencari ketika menggunakan otentikasi LADP Anda melalui PAM, saya pikir solusi terbaik adalah dengan memasukkan SHELL = / bin / bash exec / bin / bash ke dalam file .profile di direktori home pengguna Anda
sumber