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?


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

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.


-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.


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.