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.

mcandre
sumber
1
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.

jjlin
sumber
Ini tidak bekerja untuk saya di universitas saya. Saya mungkin harus berbicara dengan sysadmin.
2rs2ts
3

Anda cukup terhubung dengan

ssh -t yourhost bash

untuk mengeksekusi Bash shell secara otomatis saat Anda masuk.


Dari komentar di bawah ini Anda dapat melihat alternatifnya

ssh -t yourhost exec bash

execakan menjalankan proses baru dan keluar dari yang lama, sehingga cshproses akan keluar secara langsung.

Jika menambahkan -lpada akhir perintah sebagai argumen untuk Bash, itu akan diperlakukan sebagai shell login, tapi mungkin itu tidak diperlukan.

Daniel Andersson
sumber
1
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"
      fi
    fi
esac
MattC
sumber
0

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

pengguna454581
sumber