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.


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.


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.


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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.