GNU/Linux >> Belajar Linux >  >> Linux

Bash Mana yang Dieksekusi?

Saya pikir saya telah mengonfigurasi bash sebagai shell, tetapi mengapa ini terjadi?

Shell saya bash:

# ls -al `which sh`
  lrwxrwxrwx 1 root root 4 Jul 12 03:25 /bin/sh -> bash 

Terjadi kesalahan saat menjalankan skrip dengan sh

# sh ubuntu/util.sh
  ubuntu/util.sh: line 32: `test-build-release': not a valid identifier

Tidak ada kesalahan dari bash

# bash ubuntu/util.sh

Jawaban yang Diterima:

Itu menjalankan bash yang dapat dieksekusi yang Anda harapkan, tetapi Shell Anda bukan hanya bash; itu bash berjalan di POSIX sh modus kompatibilitas. Ini dilakukan dengan melihat nama perintah yang dipanggil, dan jika itu sh , kemudian secara otomatis mengaktifkan mode POSIX. Ini melakukan pekerjaan yang sangat buruk dalam hal ini, dan tidak boleh sepenuhnya diandalkan untuk menguji POSIX sh skrip yang kompatibel, tetapi harus sangat membatasi sintaks yang diizinkan.

–posix

Ubah perilaku bash di mana operasi default berbeda dari standar POSIX agar sesuai dengan standar (mode posix).
Lihat LIHAT JUGA di bawah untuk referensi ke dokumen yang merinci bagaimana mode posix memengaruhi perilaku bash.

Dan dari http://tiswww.case.edu/php/chet/bash/POSIX :

Memulai Bash dengan --posix opsi baris perintah atau menjalankan set
-o posix
saat Bash berjalan akan menyebabkan Bash menyesuaikan lebih dekat dengan standar POSIX dengan mengubah perilaku agar sesuai dengan
yang ditentukan oleh POSIX di area di mana default Bash berbeda.

Saat dipanggil sebagai sh , Bash memasuki mode POSIX setelah membaca file
startup.


Linux
  1. Terminal mana yang lebih baik:Bash vs Zsh

  2. Implikasi Keamanan dari Lupa Mengutip Variabel Dalam Bash/posix Shells?

  3. Manakah Parameter/variabel Khusus Shell (bash)?

  1. Bagaimana Cara Membaca Seluruh Script Shell Sebelum Mengeksekusinya?

  2. Apa perbedaan antara menjalankan skrip Bash vs sumbernya?

  3. Saya tidak sengaja mengetik kata sandi ke baris perintah bash

  1. Penerjemah Shell mana yang Menjalankan Skrip Tanpa Shebang?

  2. Bagaimana Cara Mendapatkan Tty Di Bash Yang Sedang Berjalan?

  3. Ekstrak jalur yang hilang dari bash array jalur