Saya mengalami beberapa kesulitan dalam mengubah nilai $SHELL
di aplikasi iTerm OSX. ITerm mulai /bin/zsh
, tetapi nilai $SHELL
tampaknya tidak berubah.
Apa yang telah kulakukan:
- Mengubah "perintah" seperti
/bin/zsh
pada jendela konfigurasi iTerm. - Dieksekusi
chsh
untuk mengubah shell ke/bin/zsh
. - ITerm yang dikonfirmasi dimulai pada
/bin/zsh
CATATAN # 1: Dalam aplikasi terminal saham OSX, "Terminal.app":
echo $SHELL
/bin/zsh
CATATAN # 2: Dalam aplikasi terminal OSX yang populer, "iTerm.app":
$ echo $SHELL
/bin/bash
$ echo $USER
$ melvkim
$ chsh -s /bin/zsh
Changing shell for melvkim.
Password for melvkim:
chsh: no changes made
/etc/shells
? Manual menyatakan bahwa jika shell yang Anda tentukan tidak ada dalam file itu, itu tidak dianggap sebagai shell standar.Jawaban:
Masalahnya adalah pengaturan yang bertentangan aplikasi "iTerm" dengan shell. Untuk menyelesaikannya, saya telah mereset perintah "login shell" di jendela preferensi iTerm:
Kemudian, saya mengeksekusi
chsh
untuk memodifikasinya sebagai/bin/zsh
.Untuk mereproduksi masalah (memiliki $ SHELL ditetapkan sebagai
/bin/bash/
, meskipun shell login adalah/bin/zsh
), saya hanya perlu mengubah pengaturan "iTerm" kembali ke "Command: / bin / zsh /".sumber
The
-s
bendera untukchsh
hanya upaya untuk mengubah shell, dan mungkin gagal karena Open Directory: The biasa UNIX sistem 'chsh' akan memodifikasi/etc/passwd
entri. Namun, saya dapat menjalankanchsh
tanpa argumen, yang memberi saya editor, dan informasi berikut:Saya dapat mengedit entri "Shell:"
/bin/zsh
, dan jendela Terminal selanjutnya dibuka dengan prompt Z-shell.sumber
chsh
tanpa argumen. Masih belum berhasil. Variabel tidak berubah. Bahkan, ketika editor dimuat, itu terlihat/bin/zsh
.$SHELL
pada ITerm. Silakan lihat jawaban saya untuk detail .. Terima kasih!Lihat di sini untuk penjelasan yang sangat baik dan solusi yang diposting oleh @ mklement0 [sehubungan dengan
bash
masalah pemutakhiran.Saya memiliki masalah yang sama dalam melakukan hal yang sebaliknya pada sistem saya (OS X 10.10.1): membuat
bash
shell login default lagi setelah saya menginstaloh-my-zsh
, yang membuatzsh
default, dan kemudian memutakhirkanbash
dari 3.2.53 ke 4.3.30 menggunakan Homebrew ( mengapa Apple mengirim Yosemite denganbash
versi lama ?).Saya pikir
SHELL
variabel lingkungan mencerminkan tetapi tidak mengontrol shell login default aktual untuk pengguna. Misalnya, jika, katakanlah,bash
adalah default Anda dan Anda membukabash
jendela shell baru dari terminal maka$ export SHELL="/bin/zsh"; echo "$SHELL"
akan muncul/bin/zsh
tetapi tidak ada perubahan yang sebenarnya akan terjadi karena jika Anda membuka jendela shell baru dari terminal dan lakukan$ echo $0
maka Anda akan melihat-bash
($0
berisi nama dan path dari perintah yang memulai jendela shell, dalam hal inibash
, dan di-
sebelahnya menunjukkan bahwa itu adalah shell login).Seperti @ mklement0 menunjukkan shell login default aktual untuk pengguna dikendalikan oleh
UserShell
properti dalam catatan pengguna dalam database internal sistem - ini dapat di-query dan dimutakhirkan menggunakan utilitas baris perintahdscl
. Informasi ini akan diteruskan ke aplikasi terminal Anda ketika Anda membuka jendela shell.Apa yang
chsh -s /bin/zsh
dilakukan adalah mengubahUserShell
properti ini untuk mengaturnyazsh
- Anda dapat memeriksanya dengandscl . -read /Users/$USER/ UserShell
segera setelahnya, dan Anda akan melihatnyaUserShell: /bin/zsh
. Tetapi perubahan tidak berpengaruh pada jendela saat ini, sampai Anda melakukan sesuatu seperti yangexec su - $USER
disarankan oleh @ mklement0, atau sampai Anda menutup dan membuka jendela shell.sumber
Coba jalankan perintah:
chsh -s /bin/zsh
dari terminal Mac default.sumber