Apakah mungkin untuk benar-benar memperbarui bash ke versi 4.0 di OSX Yosemite?
echo $BASH_VERSION
3.2.57(1)-release
Ini artikel dan ini benang merujuk pada pertanyaan yang sama, tetapi mereka memasang shell side-by-side baru dengan yang lama. Apakah ada cara untuk secara langsung memperbarui bash shell lama?
macos
terminal
bash
command-line
sluijs
sumber
sumber
Jawaban:
Apple tidak akan memperbarui Bash, karena versi terbaru dilisensikan di bawah GPLv3, yang tidak dapat digunakan Apple. Mereka telah memperbarui sebagian besar cangkang mereka yang lain. ZSH misalnya kebanyakan up to date.
Referensi:
Setelah sedikit riset, ini sepertinya masalah utama:
Ini akan membutuhkan perangkat lunak sumber tertutup, jika bagian GPL dibuat dimodifikasi oleh publik, yang jelas akan menjadi masalah bagi Apple.
sumber
bash
. Klausa "Tivoization" mungkin menjelaskan mengapabash
tidak dapat diperbarui pada, katakanlah, Apple TV, tetapi tidak benar-benar di desktop Mac. Lebih jauh, "bagian-bagian GPL" harus perlu dimodifikasi oleh publik; v3 tidak akan mengubahnya. Saya akan percaya bahwa klausa paten GPL v3 akan cukup untuk mencegah Apple dari menyentuh kode GPL v3.Apakah mungkin untuk benar-benar memperbarui bash ke versi 4.0 di OSX Yosemite? Iya.
Unduh / Instal homebrew http://brew.sh/ dengan menjalankan perintah ini di terminal.
Keluar dan buka kembali terminal Anda. lalu ketik
Ubah shell default melalui terminal gui dengan path literal dari bash baru Anda (EDIT: Saya belum menemukan cara CLI yang berfungsi)
Apakah mungkin untuk benar-benar memperbarui bash ke versi bash yang disediakan Apple 4.0 di OSX Yosemite?
EDIT: Tidak. Tidak seperti yang diminta op. Misalnya meng-upgrade instalasi saat ini dengan cara mengganti sendiri. Telah dicatat dalam jawaban lain bahwa Apple belum memperbarui bash karena masalah lisensi. Namun mengunduh versi bash yang diperbarui dan terpisah dan menggunakannya sebagai shell default Anda adalah solusi kanonik, bagi sebagian besar penerjemah. Ambil python misalnya. Anda tidak meningkatkan 2,7 ke 3,5 Anda mengunduh versi yang terpisah dan mengubah default Anda.
sumber
sudo chpass -s /usr/local/bin/bash
. Catatan: Lebih baik arahkan ke symlink/usr/local/bin/
agar Brew dapat menangani pemutakhiran tanpa harus mengubah lingkungan Anda setiap saat.sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
kemudianchsh -s /usr/local/bin/bash
akan menetapkan shell default untuk terminalSeperti @William katakan dalam jawabannya, Apple tidak menyediakan bash 4 karena pembatasan GPL. Anda dapat menginstal bash 4+ dan juga dapat menjadikannya shell default Anda (termasuk untuk Terminal dan iTerm2 ) dengan melakukan hal berikut.
Instal Bash 4 melalui Homebrew
Pertama instal versi bash yang lebih baru. Ada berbagai cara untuk melakukan itu, saya lebih suka Homebrew.
brew install bash
.Bash 4 sekarang tersedia di PATH Anda (dengan anggapan Homebrew bin ada di jalur Anda). Namun, tidak belum shell default Anda. Anda dapat menemukan di mana letaknya dengan menjalankan
which bash
. Dalam kasus saya ini di/usr/local/bin/bash
.Menggunakan Bash 4
Karena ini ada di PATH Anda, Anda dapat memulai sesi Bash 4 hanya dengan
bash
atau dapat digunakan dalam skrip dengan menggunakan Shebang .Misalnya, ini akan menggunakan contoh bash tertentu.
Ini akan menggunakan bash pertama pada PATH.
Anda juga dapat mengatur jalur bash untuk profil tertentu di Terminal / iTerm2 menggunakan langkah-langkah yang dijelaskan dalam jawaban @ user136952.
Menjadikan Bash 4 sebagai default
Seperti disebutkan di atas, setelah menginstal Bash 4 masih bukan shell default. Untuk menjadikan bash default, Anda perlu melakukan dua langkah lagi.
Pertama, tambahkan jalur Bash 4 ke
/etc/shells
file Anda sehingga itu adalah shell login yang diizinkan. Seperti dijelaskan di / etc / shells , file ini memiliki daftar shell login yang valid. Setelah menambahkan bash path baru,/etc/shells
tampilannya seperti berikut:Selanjutnya kita menggunakan chsh untuk menjadikannya shell default Anda. Jadi setiap sesi untuk pengguna itu akan menggunakan shell itu. Anda dapat membaca lebih lanjut tentang ini di Change the Shell di Mac OS X Terminal , tetapi perintah sebenarnya sangat mudah.
Sekarang bash baru adalah shell login default kami. Jika Anda membuka Terminal atau iTerm2 dan menjalankan
bash --version
Anda akan melihat versi baru. Perhatikan "Lisensi GPLv3 +" yang mengapa Apple tidak mengikatnya dengan macOS.sumber
sudo chpass -s /usr/local/bin/bash
ubah shell saya hanya untuk root / sudo . Untuk mengubah login reguler saya, saya harus menjalankan perintah tanpasudo
. Ini mungkin hal yang Active Directory; Saya tidak yakin.#!/usr/local/bin/bash
shebang, lihat menggunakan#!/usr/bin/env bash
( penjelasan ). Ini akan menjalankan skrip dengan versi bash apa pun yang dapat dijangkau oleh lingkungan yang meluncurkan skrip, yaitu apa pun yangwhich bash
kembali. Ini adalah solusi yang lebih portabel yang menggunakan jalur khusus. Kami tidak dapat mengharapkan pengguna lain untuk menginstal bash melalui homebrew.Anda dapat menginstal Bash versi lain tanpa homebrew
Dan ikuti langkah-langkahnya di sini: https://gist.github.com/samnang/1759336
Unduh dan instal versi bash yang Anda inginkan Ganti XX (di bash-XX) dengan versi yang Anda inginkan misalnya 4.4
Anda mungkin ingin menambahkan alias jika Anda ingin perintah bash untuk menggunakannya. Tempatkan di ~ / .bash_profile Anda
sumber
Instalasi berdampingan dengan pembaruan ke shell Anda (melalui chsh atau GUI) akan gagal untuk skrip. Script sering digunakan
env bash
, yang kembali ke versi bash OS X. Jadi, yang Anda inginkan mungkin bukan pembaruan lengkap dari bash, tetapi pemasangan berdampingan yang selalu mengembalikan versi bash yang lebih baru (yaitu, bahkan ketikaenv
diminta).Jadi, untuk menangani ini:
1) pasang bash via Homebrew, seperti yang sudah diposting oleh komentator lain
2) atur shell login Anda ke versi baru ini (melalui perintah GUI atau chsh seperti yang telah diposting orang lain)
3) setel
/usr/local/bin
(atau lintasan ke versi bash baru) di depan/bin
pada variabel $ PATH Anda, dengan menambahkan ini ke Anda~/.bash_profile
:export PATH=/usr/local/bin:$PATH
sumber
.bash_profile
, jadi itu hanya akan berdampak pada sesuatu yang Anda jalankan langsung di terminal.2019: Sesederhana di posting ini
lalu tab terminal baru, selamat menikmati!
sumber