Neden chsh komutuyla kabuğu değiştiremiyorum?


12

Yeni bir komut öğrendim, en azından düşündüm, çünkü bu komut:, chshtarif edildiği gibi davranmıyor.

Bunun gibi çalıştığı açıklandı:

  1. cat /etc/shells hangi mermilerin takılı olduğunu bilmek, böylece aralarından seçim yapabilirsiniz.
  2. do echo $SHELLkullandığınız kabuk, hangi bilmek.
  3. mermilerden birini seçin ve yazın chsh -s /path/to/shell
  4. şifreyi girin ve echo $SHELLyeni bir kabukta olduğunuzu doğrulayın .

Bunu yaptım ve şifreyi girerken hata mesajı almadım, ama yine de aynı kabuktaydım.

% echo $SHELL
/bin/bash
% cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
% chsh -s /bin/sh
Password: 
% echo $SHELL
/bin/bash

5
Önce çıkış yapıp tekrar giriş yapmalısınız.
Rui F Ribeiro

7
Lütfen terminal metninin resimlerini göndermeyin. Sorunuzun gövdesine kopyalanabilir ve yapıştırılabilir ve grafiksel bir aksaklık veya benzeri bir şey göstermediğiniz sürece gerçekten resim göndermeye gerek yoktur.
Sergiy Kolodyazhnyy


Yazımı düzenledim, resmi sildim ve metni yapıştırdım, ancak görüntü gece boyunca geri geldi.
köpekbalığı

@sharkant Görünüşe göre birisinin inceleme kuyruğunda bir düzenlemesi vardı ve onaylandıktan sonra yayınınızı düzenledi. SE düzenleme sisteminin eskisiyle yeni bir düzenlemenin üzerine yazmayacağını düşündüm, ama heh, kim bilir?
Zan Lynx

Yanıtlar:


19

Oturumu kapatın ve tekrar oturum açın.

chshKomut güncelleyecek /etc/passwddosyayı, ancak değişmez akım kabuğu ne de değerini $SHELLşimdiki kabuğunda değişken (bunu yapıyormuş imkân yok). Tekrar giriş yapmanızın nedeni budur; bir değişikliğin geçerli olması için yeni bir giriş oturumu başlatmanız gerekir.


Bir giriş kabuğunun ne olduğunu ve bir giriş kabuğundaki veya giriş kabuğundaki bir tür olduğumu nasıl bildiğimi anlamıyorum. Yeni bir giriş oturumuna nasıl başlayabilirim?
köpekbalığı

1
@sharkant Buradaki nokta, değiştirdiğiniz bilgilerin bir /etc/passwdsonraki oturum açana kadar okunmamasıdır. Tamamen çıkış yapmanız ve değişikliğin geçerli olması için tekrar giriş yapmanız gerekecektir. Bunu yapamazsanız, makineyi yeniden başlatmanız da işe yarayacaktır.
Kusalananda

1
Sanırım bu sefer anlıyorum: bu yüzden chsh -s / path / to / shell komutu içinde bulunduğum kabuğu hemen değiştirmez, ancak kabuğu başlattığımda etkili olacak / etc / passwd içindeki bir girişi değiştirir?
köpekbalığı

@sharkant Tam da böyle çalışıyor! Sonunda seni yanlış anladığını anladığım için mutluyum. Cevabı güncelleyeceğim.
Kusalananda

1

Usermod yardımcı programı kullanarak benim durumumda çalıştı. Ubuntu üzerinde çalışıyor 18.04.

  1. İlk olarak, geçerli değeri kontrol edin

grep nameofuser /etc/passwd

  1. değiştir

sudo usermod --shell /bin/bash nameofuser

  1. Doğrula

grep nameofuser /etc/passwd

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.