Ketika zsh ditetapkan sebagai shell login pada Mac OS X, ketika dimulai oleh iTerm, zsh tidak menganggap itu dijalankan sebagai shell login, meskipun itu dimulai sebagai '-zsh' ('-' diletakkan sebagai karakter pertama dari arg [0]) yang seharusnya berarti ia harus mulai sebagai shell login.
Jadi, ketika saya mengatur shell login ke bash, bash mengenali ini '-' pertama kali dalam $ 0 dan berjalan sebagai shell login, tetapi zsh tidak, meskipun tampaknya memang seharusnya demikian.
Apakah ada cara untuk membuat zsh mengenali '-' di arg [0], atau membuat iTerm menjalankan shell dengan argumen baris perintah --login?
Jawaban:
Di iTerm -> Preferensi -> Tab Profil -> Bagian Umum atur Perintah ke: / bin / zsh --login
sumber
/usr/local/bin/zsh --login
Anda akan dimintai kata sandi, tetapi begitu Anda memperbarui pengaturan, setiap sesi iTerm / Terminal baru yang Anda mulai di mesin itu akan default ke zsh.
sumber
chsh
memberi tahu Anda sesuatu seperti "shell tidak standar", itu berarti Anda harus menambahkan path shell baru/etc/shells
. Ini bisa terjadi jika Anda mengubah, misalnya, ke versi zsh yang diinstal oleh homebrew, yang memasukkannya ke dalam/usr/local/bin/zsh
.chsh -s $(which zsh)
dapat digunakan untuk memastikan jalur yang benar.Buka panel Pengguna & Grup pada System Preferences -> Pilih Pengguna -> Klik kunci untuk melakukan perubahan (sudut kiri bawah) -> klik kanan pengguna saat ini pilih Opsi lanjutan ... -> Pilih Shell Login: / bin / zsh dan OK
sumber
Perintah untuk mengganti shell saat startup adalah
chsh -s <path_to_shell>
. Kerang default di mac OS X diinstal di dalambin
direktori jadi jika Anda ingin mengubah ke defaultzsh
maka Anda akan menggunakan yang berikut iniJika Anda menggunakan versi berbeda
zsh
maka Anda mungkin harus menambahkan versi itu/etc/shells
untuk menghindari pesan shell yang tidak standar. Misalnya jika Anda ingin versi home-brewzsh
maka Anda harus menambahkan/usr/local/bin/zsh
ke file yang disebutkan di atas yang dapat Anda lakukan dalam satu perintahsudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"
dan kemudian jalankanAtau jika Anda ingin melakukan semuanya dalam satu perintah, cukup salin dan tempel ini jika Anda sudah menginstal zsh
sumber
/etc/shells
dalam tubuh jawaban itu sendiri.Sudahkah Anda mencoba mengedit entri shell di pengaturan akun .
Buka preferensi Akun, buka kunci, dan klik kanan pada akun pengguna Anda untuk dialog Pengaturan Lanjutan . Shell Anda harus / bin / zsh, dan Anda dapat mengedit permohonan itu dengan benar (yaitu, tambahkan argumen --login).
sumber
Gunakan
login
utilitas untuk membuat shell login. Asumsikan bahwa pengguna yang ingin Anda masuki memiliki nama pengguna Alice dan zsh diinstal/opt/local/bin/zsh
(misalnya, versi yang lebih baru diinstal melalui MacPorts). Di iTerm 2, buka Preferensi, Profil, pilih profil yang ingin Anda atur, dan masukkan di Command :Lihat
man login
untuk detail lebih lanjut tentang opsi.sumber