Saya membaca bahwa terminal adalah apa-apa tapi shell, dan Unix menyediakan rasa yang berbeda dari kerang:
Anda dapat mengetik perintah berikut di terminal anda untuk melihat shell yang anda gunakan:
echo $0
Hasilnya akan terlihat sesuatu yang mirip dengan yang di bawah ini jika anda menggunakan bash (Bourne Again Shell) terminal:
-bash
Untuk mencari shell yang anda punya pada standar lingkungan anda dapat memeriksa nilai SHELL
variabel lingkungan:
echo $SHELL
Untuk menemukan shell saat ini misalnya, terlihat untuk proses (shell) yang memiliki PID saat ini shell misalnya.
Untuk menemukan PID contoh saat ini dari shell:
echo "$$"
Sekarang untuk menemukan proses yang memiliki PID:
ps -p <PID>
Menempatkan bersama-sama:
ps -p "$$"
$SHELL
memberikan default shell.
$0
memberi anda saat ini shell.
Misalnya: saya telah bash sebagai shell default saya, yang saya gunakan untuk Aplikasi Terminal. Tapi bagi saya iTerm2 aplikasi, saya gunakan perintah seperti jendela terbuka: /bin/ksh
.
Jadi saya
$0
memberi saya /bin/ksh
pada iTerm2.
$SHELL
memberi saya /bin/bash
pada iTerm2.
$0
,$SHELL
memberi saya /bin/bash
pada Terminal
Dengan jawaban yang lain cenderung menggunakan shell fitur khusus, tapi kami mencoba untuk menemukan yang shell yang kita gunakan, sehingga mereka menganggap jawaban untuk masalah ini. Misalnya tidak ada jawaban akan bekerja pada ikan.
sh -c 'ps -p $$ -o ppid=' | xargs ps -o comm= -p
Alih-alih menggunakan $$ sintaks dalam doa sh, tapi kemudian kami mencari PPID tidak PID. Gunakan PPID untuk menemukan cmd.
sh -c 'ps -p $$ -o ppid=' | xargs -I'{}' readlink -f '/proc/{}/exe'
Terima kasih untuk peningkatan @muru
Untuk mengetahui yang merupakan default shell untuk pengguna anda, anda dapat menjalankan:
echo "$SHELL"
Misalnya jika anda're menggunakan Bash anda harus mendapatkan output sebagai berikut:
/bin/bash
Jika anda didn't perubahan konfigurasi apapun itu harus Bash sejak Bash's shell default di Ubuntu.
Posting asli ditanya tiga pertanyaan. Jawaban yang diberikan mencakup pertanyaan pertama, "Ketika saya buka jendela terminal, shell yang dibuka oleh default?" Mereka juga menjawab pertanyaan yang diajukan, yaitu "Bagaimana saya bisa mengetahui shell yang saat ini sedang berjalan di terminal?" Namun, sejauh yang saya bisa melihat tidak ada yang menjawab baik kedua atau ketiga pertanyaan awalnya diminta, yaitu "Bagaimana saya memeriksa berapa banyak kerang yang diinstal?" dan "Bagaimana saya mengubah shell yang digunakan dari akun saya?"
cat /etc/shells
Misalnya, pada instalasi default Ubuntu 18.10 ini memberikan:
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
Namun, secara default sh adalah simbolik link ke dasbor, sementara rbash link untuk bash dengan opsi -r ("dibatasi bash") jadi sebenarnya hanya ada dua kerang, bukan empat seperti daftar di atas menunjukkan. Perintah berikut ini akan menunjukkan kepada anda apakah salah satu dari yang tercantum kerang pada kenyataannya link simbolik, dan jika demikian mana mereka link ke: ls -l /bin
Di salah satu server saya terhubung ke login shell /bin/sh
yang merupakan symlink ke /bin/bash
Paling jawabannya di sini akan memberikan sh
, yang akan membuat OP menganggap itu's Bourne shell dan tidak GNU bash, kecuali ini yang memberikan /bin/bash
Pilihan lain yang bekerja untuk kasus ini adalah:
$ echo $SHELL
/bin/sh
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 May 31 16:15 /bin/sh -> bash
$ /bin/sh --help
GNU bash, version 4.2.10(1)
Usage: /bin/sh [GNU long option] [option] ...
/bin/sh [GNU long option] [option] script-file ...