GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Saya Dapat Menggunakan Bash Sebagai Shell Login Ketika Sysadmin Menolak Membiarkan Saya Mengubahnya?

Sysadmin unix tempat saya bekerja enggan memberi saya akses untuk mengubah shell login saya dari ksh ke bash . Dia telah memberikan berbagai alasan, yang paling lucu adalah karena mereka menulis semua skrip mereka untuk ksh mereka tidak akan berfungsi jika saya mencoba menjalankannya. Saya tidak tahu dari mana dia mendapatkan ide-ide ini, tetapi karena saya tidak dapat meyakinkannya, apakah ada alternatif lain yang saya miliki?

(chsh diinstal pada mesin ini, tetapi kami menggunakan pasangan kunci publik/pribadi untuk masuk, dan saya tidak memiliki kata sandi, jadi ketika chsh meminta saya untuk kata sandi, saya tidak punya apa-apa untuk diberikan. )

Jawaban yang Diterima:

Saat Anda masuk, file ~/.profile dibaca oleh shell login (ksh untuk Anda). Anda dapat menginstruksikan shell login itu untuk menggantikan dirinya sendiri dengan bash. Anda harus mengambil beberapa tindakan pencegahan:

  • Hanya ganti shell login jika interaktif. Ini penting:jika tidak, masuk dalam mode grafik mungkin tidak berfungsi (ini bergantung 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 apakah bash tersedia, sehingga Anda masih dapat masuk jika file yang dapat dieksekusi tidak ada karena alasan tertentu.

Anda memiliki pilihan apakah akan 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 untuk tidak mengeksekusi bash secara rekursif dari ~/.profile . Tidak ada keuntungan nyata memiliki ~/.profile dieksekusi oleh bash daripada ksh, jadi saya sarankan untuk tidak melakukannya.

Setel juga 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

Linux
  1. Cara Menggunakan Kata Sandi Terenkripsi di Linux Bash Shell Script

  2. Tip Unix Shell:Ubah Shell Login Dari Bash ke Lainnya

  3. Cara mengubah shell default di Linux

  1. Bagaimana Cara Mengubah Cron Shell (sh ke Bash)?

  2. Bagaimana skrip bash dapat mengetahui direktori tempat ia diinstal ketika bersumber dari . operator?

  3. Bagaimana cara cepat mengubah kata pertama dalam perintah Bash?

  1. CentOS / RHEL :Cara Mengubah shell login pengguna

  2. Cara Mengubah Shell Default Di Linux

  3. Bagaimana cara menemukan versi Fedora yang saya gunakan?