Welche Shell soll ich für FreeBSD und Debian lernen?


7

Ich habe viele Artikel gelesen, die besagen, dass die offizielle Shell in FreeBSD tcshund in Debian ihre ist dash. Wenn ich jedoch entweder echo $shell(FreeBSD) oder envin Debian bin , heißt es, dass die Shell cshim ersten Fall oder bashin Debian ist.

Dies ist in Neuinstallationen. Ich habe unter dem Root-Konto und einem normalen Benutzerkonto getestet. Wenn ich in FreeBSD ein neues Konto erstelle, habe ich die Wahl zwischen 3 Shells. sh, cshOder tcsh. Wenn ich keine Wahl treffe, cshist die Standardeinstellung für das Konto.

Was ist die offizielle Standard-Shell unter diesen Systemen? Ist es tcshoder cshin FreeBSD? Ist es dashoder bashin Debian?

Bin ich es, der etwas falsch macht? Oder sind die Artikel und Websites falsch informiert?

Ich möchte zwei Shells lernen: eine für Debian und eine für FreeBSD, aber ich kann nicht finden, welche ich lernen soll, da nicht klar ist, welche die offizielle Shell ist.

Auch bei der Suche nach dem Shell soll ich lernen, fand ich dies: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ Ist es jemand, der nicht nur wie csh, oder sollten wir wirklich vermeiden csh?

Ich verwende die neuesten Debian- und FreeBSD-Versionen.

Ich fange an, mich mit all diesen Shell-Optionen zu verlaufen, sie sehen für mich alle gleich aus (mit Ausnahme der Syntax; ich meine, sie bieten alle die gleichen Möglichkeiten). Deshalb möchte ich die offizielle lernen.


Es gibt keine "offizielle" Shell, aber einige sind besser als andere.
Emil

Wenn Sie versuchen, etwas zu lernen - zögern Sie nicht zu überlegen, was am besten zu lernen ist, wie man es am besten lernt usw. -, tun Sie es einfach (seien Sie aktiv) und es wird sehr bald (viel) mehr) klar, was zu tun ist und wie es zu tun ist.
Emanuel Berg

Lernen Sie, wie eine Bourne-Shell aussieht, entweder Bash (1) oder Dash (1). Etwas um 99,56% [ja, ich nur , dass bis gemacht, aber es kann nicht zu weit von der Wahrheit] von Shell - Skripten werden in der ehrwürdigen sh geschrieben (1) Sprache, es ist ein wenig von einem lingua franca . Mehr als der POSIX-Standard spezifiziert dies als die Shell, die verfügbar sein muss.
vonbrand

Antworten:


14

Sie müssen die Standard-Shell für ein bestimmtes System überhaupt nicht verwenden. Sowohl Debian als auch FreeBSD bieten eine Reihe unterschiedlicher Shells, von denen die meisten oder alle auf beiden verfügbar sind, entweder vorinstalliert oder einfach zu installieren.

Achten Sie auf die Benennung. Es ist nicht ungewöhnlich /bin/csh, wirklich tcsh /bin/shzu sein oder bash oder ksh zu sein.

sh, die Bourne-Shell, ist die älteste noch gebräuchliche Unix-Shell. bashist wahrscheinlich das am weitesten verbreitete sh-Derivat; kshund zshsind auch weit verbreitet.

cshDie C-Shell wurde von Bill Joy für BSD entwickelt. Es verfügt über einige Funktionen, die eine bequemere interaktive Verwendung ermöglichen als sh(oder zumindest als die alte Version sh, die zu dieser Zeit existierte). tcshwird von cshvielen neuen Funktionen abgeleitet und fügt viele hinzu, von denen die meisten auf die interaktive Verwendung abzielen. Wie Sie beim Lesen von csh.whynot gesehen haben , haben csh und tcsh einige Probleme, wenn es darum geht, sie für Skripte zu verwenden , anstatt interaktiv.

Persönlich habe ich mit csh angefangen und dann zu tcsh gewechselt, als es verfügbar wurde. Ich benutze csh jetzt selten für Skripte, bevorzuge sh oder bash (oder Perl für etwas ziemlich Komplexes).

(Update, einige Jahre später: Seitdem habe ich tcsh aufgegeben und verwende bash jetzt interaktiv.)

Mein Rat wäre, eine einzelne Shell auszuwählen und sie gut zu lernen, indem ich sie sowohl auf FreeBSD als auch auf Debian verwende. Wenn Sie sich für tcsh entscheiden, müssen Sie es wahrscheinlich auf Debian installieren : sudo apt-get install tcsh. Wenn Sie sich für Bash entscheiden, weiß ich nicht, ob es auf FreeBSD vorinstalliert ist. Wenn dies nicht der Fall ist, sollte die Installation ebenso einfach sein.

Es ist nicht notwendig, dieselbe Shell interaktiv und für Skripte zu verwenden, aber es kann Verwirrung vermeiden und zu einer kürzeren Lernkurve führen.

ksh ist wahrscheinlich ungefähr so ​​mächtig wie bash, und zsh ist noch mächtiger (und hat viele Funktionen, für deren Erlernen ich mir nie die Zeit genommen habe).

Ich empfehle Bash sowohl für FreeBSD als auch für Debian (und für alle anderen Unix-ähnlichen Systeme, die Sie möglicherweise verwenden) sowie für die interaktive Verwendung und die Skripterstellung. Aber andere Entscheidungen sind absolut legitim und einige passen vielleicht besser zu Ihnen.


Wie unterscheiden sich diese Bash interaktiv? Ich verstehe, dass sie nicht für Skripte gleich sind, sondern für den allgemeinen Gebrauch?
user1115057

Bedeutet dies, dass unter FreeBSD und Debian tcsh / dash vom System für das Skript verwendet wird und Benutzer und Root csh / bash für die interaktive Verwendung verwenden?
user1115057

Wie unterscheidet sich Bash von was? Die einzige Möglichkeit, dies zu beantworten, besteht darin, die Dokumentation für jede Shell zu lesen. Ich kann ihnen in einem Kommentar nicht gerecht werden.
Keith Thompson

1
"Bedeutet das, dass ...?" -- Nicht unbedingt. Für Debian denke ich, dass Systemskripte normalerweise mit sh oder bash geschrieben werden. für FreeBSD weiß ich nicht. Solange diese Skripte jedoch ordnungsgemäß funktionieren, müssen Sie sich nicht wirklich darum kümmern, wie sie geschrieben sind (es sei denn, Sie ändern sie selbst). Für Debian ist die interaktive Shell von root standardmäßig bash. Ich weiß nicht, was es für FreeBSD ist, aber wenn Sie Zugriff auf ein System haben, können Sie grep root /etc/passwdes herausfinden. Jeder Benutzer verwendet die von ihm bevorzugte Shell und kann sie chshgegebenenfalls ändern.
Keith Thompson

1
@EmanuelBerg: Die C-Shell heißt so, weil ihre Syntax C ähnelt - aber es ist nicht wirklich so nah. Ich finde Bash konsequenter und mächtiger.
Keith Thompson
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.