Linux istemim neden giriş adı ve yolu yerine $ gösteriyor?


13

Sunucularımdan birinde, komut istemi [kullanıcı @ ana bilgisayar yolu] ... ve aslında yolu otomatik doldurmak için "sekme" ye basabilirim.

Ama yeni Ubuntu sunucumda bu sadece bir dolar işareti mi?


1
pwdGeçerli çalışma dizininin adını yazdırmak için istediğiniz zaman yazabilirsiniz . Tab sekmesinin de çalışmadığını mı söylüyorsunuz? (Kullandığım bazı makinelerde, yalnızca root olarak giriş yaptığımda bu kısa istemi alıyorum ve bunu hoş bir uyarı olarak yerinde mutlu bir şekilde bırakıyorum. , sen misin?)
Arjan

Alex bize hangi dağıtımı kullandığını söyleyebilir misin?
invert

Ubuntu kullanıyorum.
Alex

En son Ubuntu? Tab sekmesinin de çalışmadığını mı söylüyorsunuz?
Arjan

İki soru soruyor gibi görünüyorsunuz: Neden sekme yolu otomatik doldurmuyor ve istem [kullanıcı @ ana makine yolu] yerine neden sadece bir dolar işareti. Her ikisine de cevap vermediğinden, cevaplara oy vermek biraz zor.
Joseph Holsten

Yanıtlar:


27

İki soru sorduğunuz için ikisine de cevap vereceğim.

Otomatik tamamlama dosya yollarını neden sekmiyor?

Çünkü kabuk ya onu desteklemiyor ya da sekme tamamlama açık değil.

Bunu çözmek için önce kabuğunuzun ne olduğunu keşfetmeniz gerekir. Kabuğunu sevdiğiniz makinede koşun

echo $SHELL

Hiç ortak görebilirsiniz /bin/bash, ya da bir şey daha az yaygın gibi /bin/tcsh, /bin/zshtamamen başka bir şey.

Artık kabuğunuzu Ubuntu makinesinde değiştirebilirsiniz. Bu makinede, önce istediğiniz kabuğun var olduğundan emin olun. Kabuk, Ubuntu makinesinde diğeriyle aynı konumda olmayabileceğinden, yazarak konumu kontrol edin.

 which bash

Bu, size böyle bir şey istediğiniz kabuk yolunu verecek /bin/bash, /usr/bin/bashya da /usr/local/bin/bash. Eğer bash dışında bir kabuk istiyorsanız Tabii, sen söylerim which tcsh, which zshveya benzeri.

Bir yol görmüyorsanız, ancak bunun yerine görüyorsanız bash not found, uygun paketi yüklemeniz whichve kabuğun nereye kurulduğunu bulmak için tekrar kullanmanız gerekir.

Seçtiğiniz kabuğun yoluyla, nihayet koşarak kabuğunuzu değiştirebilirsiniz.

chsh -s /bin/bash

/bin/bashseçtiğiniz kabuk için uygun yol ne olursa olsun yerine koymak .

Bilgi istemi neden [user @ host yolu] yerine dolar işareti?

Çünkü senin istemi ortam değişkenleri $PS1, $PS2ve bu kadar. Bunlar mermiler arasında taşınabilir olma eğiliminde değil, bu yüzden olası adaylar için birkaç bağlantı:

bashBash Değişkenleri ( & c dahil ) ve İstemi Yazdırma ( uzun adı açıklayan ) sayfalarıyla kapsamlı bir el kitabına sahiptir . Aşağıdaki satırıPS1PROMPT_COMMANDPS1~/.bashrc

export PS1='[\u@\h \w] '

tcshBir sahiptir online manuel bir bölümle (sadece kendi man sayfası), istemi ortam değişkenleri. Aşağıdaki satırı~/.tcshrc

set prompt='[%n@%m %~] '

zshBir sahiptir kullanım kılavuzunu bir ile, ister basit bir rehber , hem de bir el üzerinde çok detaylı atfen, İstemi Genişleme . Aşağıdaki satırı~/.zshrc

export PS1='[%n@%m %~] '

6

Bash tek kabuk değil.

Sorununuz, PS1'i ayarlayan bir .profile veya .bashrc'ye sahip olmamanız basit bir sorun olabilir veya giriş kabuğunuzun hiç bash olmaması olabilir.

Bash, gnu readlinesekme tamamlama gibi şeyler için kullanır . Bu karmaşık bir konudur ve readline'ın kendi kullanıcı başına yapılandırma dosyası bile vardır.

Bkz man bash, man shve man 3 readline. Bash cevap veriyor --version. Birçok linux sisteminde, /bin/shaslında bash değil, genellikle sakat bir versiyonu ash.


1
dashyerine değil ashmi? böyle bir şey okumak düşündüm
knittl

2
+1, bir .profile veya .bashrc'ye sahip olmadığı için +1, Alex Ubuntu'yu yüklerken hesabını ilk olarak ayarlamadıysa, varsayılan olarak yeni kullanıcıların bir .bashrc / PS1 seti yoktur.
Cory Plastek

4

sanırım, bash kullanmıyorsunuz, ama sh ve isteminiz düzgün ayarlanmamış (bu sh ile bile mümkünse).

şu anki kabuğunuzu yazarak alabilirsiniz: echo $SHELL

bash'ı başlatmak istiyorsanız, şunu yazın bash


İstemi diğer kabuklarla ayarlayabilirsiniz. Kabuk diye bir şey yok sh. Yankılama $SHELLadlı bir ortam değişkeni yazdırır SHELL. Bu ortam değişkeni kabuğa işaret eder ve yalnızca bash tarafından ayarlanır. Hangi kabuğun çalıştığını belirlemede yaklaşık olarak işe yaramaz, çünkü mevcut sürecin bazı ebeveynlerinin bash olabileceğini gösterir.
DigitalRoss

kabuğun program adı sh'dir (/ bin / sh olarak). ve evet, echo $ SHELL, genellikle ayarlanan SHELL değişkenini yazdırır.
knittl

Her unix sisteminde /bin/shevet adlı bir yürütülebilir dosya vardır . Ama adı olan hiçbir kabuk bilmiyorum sh. Aklıma ash, ksh, csh, bash, zsh, ve tcsh. Birincisi linux ve NetBSD üzerindeki olağan / bin / sh, sonuncusu normal FreeBSD kabuğudur ve diğerleri isteğe bağlı kabuklardır. Birçok masaüstü ortamı, / bin / sh öğesini kül olarak bırakırken kullanıcıların oturum açma kabuğunu bash olarak değiştirir.
DigitalRoss

2
@ DigitalRoss shBourne kabuğudur. tr.wikipedia.org/wiki/Bourne_shell Bazı sistemler (Solaris) hala Bourne kabuğunun sadece yeniden uygulamalardan birinin (kül, tire, bash, ksh, zsh) bir kopyası olmayan bir sürümü ile birlikte gelir.
Chris Johnsen

... ve bash, Bourne kabuğundan, csh ve ksh'dan bazı özellikleri devralan "Bourne again shell" olarak bilinir.
invert

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.