Menjalankan chsh tidak mengubah shell

19

Saya ingin mengganti shell saya dari bash ke zsh.

Saya telah mencoba menjalankan yang berikut saat masuk sebagai pengguna zol:

$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh zol
$ su -c 'chsh -s /bin/zsh zol'
# The above all results with:
$ password:
$ chsh: Shell not changed.

# zsh exists in /etc/shells.. 
chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

Apa yang salah? Bagaimana saya bisa memperbaikinya?

Zolomon
sumber
Apakah Anda mencoba menjalankan 'chsh' tanpa argumen sebagai zol?
George M
Apakah Anda menggunakan sesuatu seperti ldap / nis dll?
Ulrich Dangel
Jauh lebih penting: Mengapa tidak memberi Anda lebih banyak informasi? Pesan itu mungkin baik untuk sysop berpengalaman tetapi bagi kebanyakan orang itu benar-benar kasar. Saya menghadapi masalah yang sama 5 tahun kemudian, dan orang-orang bertanya-tanya mengapa linux telah menghabiskan 20 tahun terakhir tidak di desktop.
flurbius
Anda mengharapkan shell Anda berubah secara instan? Anda mengubah Anda shell login dengan chsh, yang berarti Anda akan harus log in lagi.
Kusalananda

Jawaban:

17

Modifikasi akun pengguna tidak akan disimpan jika Anda membuka / etc / passwd (vim / etc / passwd) ketika Anda mencoba mengubah info.

Alternatif: coba dengan usermod (as zol):

$ usermod -s /bin/zsh 

atau

$ sudo usermod -s /bin/zsh zol

Jika ini tidak berhasil, edit /etc/passwddengan tangan.

sudo vipw
# set zol's shell to /bin/zsh
:wq
fromnaboo
sumber
6
silakan gunakan vipwsebagai ganti vimkarena mereka mengatur kunci file yang sesuai.
Ulrich Dangel
"Modifikasi akun pengguna tidak akan disimpan jika Anda telah membuka / etc / passwd" - tetapi mengapa?
Thanatos
Itu tidak bekerja juga. Ketika saya me-restart mesin virtual Linux (centos7), tidak apa-apa sekarang!
WeizhongTu
1

Kapan menjalankan "chsh-l" jika Anda melihat:

/usr/bin/zsh
/bin/zsh

Kemudian gunakan:

chsh -s /usr/bin/zsh

Peringatan: Perintah dijalankan pada Fedora 25, Di ubuntun pilihan "-l" dari keluar.

lourencoccc
sumber
-ladalah opsi yang tidak valid untuk saya. Saya di Ubuntu 16.04
byxor
Maaf, saya tidak memberikan informasi tentang distro tempat perintah bekerja. Dalam kasus saya, saya menguji pada Fedora 25. Saya mencoba di ubuntu dan saya memverifikasi opsi "-l" keluar.
lourencoccc
Apapun, chsh -sbekerja dengan sempurna. Terima kasih.
byxor
Opsi ini berlaku pada Manjaro tetapi masih menolak untuk mengganti shell.
flurbius
0

Jika Anda lihat chsh: Shell not changed., itu bisa berarti bahwa shell sudah berubah.

Periksa cangkang mana yang terdaftar:

cat /etc/passwd | grep `cd; pwd`

Jika benar, logout dan kembali agar perubahan diterapkan.

Kode Bling
sumber
0

Baru saja berlari ke ini. Apa pun yang saya lakukan, masuk dan keluar tidak akan mengubah shell saya, tetapi terdaftar di / etc / shells dan / etc / passwd.

akhirnya saya sadar: Mungkin saya login dengan sesi lain?

Jadi saya lakukan

# who

dan itu memvalidasi saya memang memiliki sesi terbuka lainnya dari komputer lain:

dom  pts/0        Nov 6 13:53 (10.1.6.121)
dom  pts/1        Nov 5 12:30 (10.1.6.165)
dom  pts/2        Nov 4 12:33 (10.1.6.197)

Saya kemudian melakukannya:

pkill -KILL -u dom

Saya segera keluar dan setelah masuk kembali: Voila! Shell diubah

Dom
sumber