Hanya mencoba belajar bash scripting sedikit. Versi bash lama saya:
Bash version 3.2.53(1)-release...
Saya telah memperbarui bash saya di mac os x yosemite dengan homebrew:
brew update
brew install bash
Kemudian di properti terminal saya telah mengubah path shell standar dari /bin/bash
ke /usr/local/bin/bash
(Seperti yang saya mengerti ini adalah di mana homebrew menginstal bash yang diperbarui).
Lalu saya memeriksa hasilnya lagi (dan sepertinya semuanya baik-baik saja):
$ echo $BASH_VERSION
Bash version 4.0.33(0)-release...
Tetapi ketika saya mencoba menulis skrip bash sederhana:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
do
echo "Welcome $i times"
done
HASILNYA ADALAH:
Bash version 3.2.53(1)-release...
Welcome {0..10..2} times
DARI PADA:
Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times
Mengapa versi Bash berubah kembali menjadi yang lama ketika saya mencoba menjalankan skrip di shell yang sama ??? Ini hanya membuatku takut! Tolong seseorang jelaskan apa masalah saya)))
sh
ada di/bin
.brew
mungkin tidak membuat symlink untukbash
dipanggilsh
. Dengan Anda$PATH
set dengan benar, coba mulai seperti ini:bash script.sh
.#!/usr/bin/env bash
Pasang bash baru:
Jadikan ini shell default:
Atur lingkungan dalam skrip:
Menggunakan
env
akan mencari Bash di Anda$PATH
dan menggunakan yang pertama kali ditemui. Anda dapat melihat mana yangbash
akan digunakan dengan mengetikwhich bash
. Jika itu melihat/bin/bash
pertama, Anda akan perlu untuk mengatur Anda$PATH
di~/.bashrc
dan/.bash_profile
.sumber
chsh
, Anda perlu memperbarui / etc / shells .Seperti yang ditunjukkan oleh pjv, Anda harus benar-benar menggunakannya
di skrip Anda di mana saja untuk menjadi portabel. Misalnya jika Anda mencoba menjalankan skrip Anda
itu akan gagal pada kebanyakan sistem linux.
sumber