Ist es sinnvoll, neben normalen Shell-Skripten auch die Programmierung von Bash-Skripten unter Unix zu lernen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

so eine Frage stellt sich doch nur für Menschen, die schlecht vergessen können.

Die bash-Shell verfügt über alle Eigenschaften der "normalen" bourne-Shell.
Natürlich kann man nur soviel lernen und alle Erweiterungen ignorieren.
Für Programmierer, die Shell-Programme für alle möglichen Plattformen zu schreiben haben, ist es schon von Vorteil, die Erweiterungen gar nicht zu kennen.
Sollten sie aber doch mal Programme, die alle Features der bash nutzen, bearbeiten müssen, dann haben sie "schlechte Karten".
POSIX hin oder her, schon vor 20 Jahren war auch unter SUN-OS , also UNIX, die bash verfügbar.
Wie wahrscheinlich ist es, dass Shell-Programme auf allen möglichen Maschinen laufen muss?

Viele Nutzer von Linux nutzen neuerdings die Bash,

o.k. wenn "neuerdings" so vor 25 Jahren angefangen hat, dann stimmt das.

Woher ich das weiß:Berufserfahrung

Ja, lohnt sich sehr, aaaaber ...

Ich schreibe meine Shellskripte immer so, dass sie mit allen sh-basierten Shells laufen.

Deshalb funktionieren meine Skripte in der ksh, bash, zsh, uvm.

Aaaaaaber, da die Bash wohl am weitesten verbreitet ist, und viele andere Shells einige Bash-Features übernommen haben, lohnt es sich schon, Bash zu lernen.

Zumal der Unterschied zu "herkömmlichen" Shells nicht allzu groß ist und die Menge der neuen Features leicht abzählbar ist.

Und selbst, wenn du aktiv fast nie die Bash-spezifischen Features nutzt, so ist es dennoch gut, sie zu kennen.

In einer Schleife kann man zwar den Bashstyle ...

let i+=1

... schreiben, aber aus Kompatibilitätsgründen nutze ich immer so etwas hier:

i=ˋexpr $i + 1ˋ

Letzteres funktioniert in allen Nicht-csh-Shells, ist aber evtl. etwas ineffizienter.

Genauso kann man Funktionen in Bash mit ...

function foobar {
  echo 'Foo Bar'
}

... definieren, aber der "herkömmliche" und ultra-kompatible Weg mit ...

foobar () {
  echo 'Foo Bar'
}

... ist nicht komplizierter, funktioniert dafür aber in allen anderen Shells. (außer csh)

Fazit: Die Bash-Features zu kennen ist seeehr hilfreich, vor allem, wenn man Drittskripte manipulieren bzw. bearbeiten will.

Persönlich ist mir massive Portabilität aber immer am Wichtigsten, weshalb ich auf nahezu alle modernen Shell-Features der letzten 30 Jahre verzichte, und eigene kurze Fallbacklösungen nutze. (was meist sowieso nur Einzeiler sind, also nich der Rede wert)

Oft trifft man auch auf Systeme, die busybox statt einer ausgewachsenen Shell nutzen, und da ist es dann schon von Voreil, nicht auf Features der fetten Bash angewiesen zu sein.

Und nur um Missverständnisse zu vermeiden: Die CShell wurde oben mehrfach als Ausnahme erwähnt, aber auch wenn diese Shell noch "merkwürdiger" ist, als herkömmliche Bourne-Shell-Derivate, hat sie dennoch Ein-Keyword-Features, für die man bei anderen Shells viele Zeilen Code schreiben müsste.

Es lohnt sich also ausdrücklich auch die CShell (im Besonderen tcsh) neben der Bash zu lernen!

Der Nutzer grtgrt hat dir auf eine andere Frage glaube ich diese Linkliste mit der Grymoire-Seite genannt. Die dortigen Tutorials zu Bash, cshell, POSIX-Shell, AWK, Sed, usw. sind alle sehr sehr gut!

Übernimm dich nicht und lass dir Zeit beim Lesen / Lernen, während du gleich parallel alles selbst im Terminal ausprobierst. Dann kannst du das alles binnen weniger Wochen sehr gut lernen, denke ich.

Viel Erfolg! :)

Woher ich das weiß:Berufserfahrung
Anonym391144  30.07.2020, 07:24

Vielen Dank für die ausführliche Antwort.

1
Viele Nutzer von Linux nutzen neuerdings die Bash, die erweiterte Funktionen anbietet.

Aus welchem 20 Jahre alten Buch hast du das denn?

Bash ist die meist benutze Shell. Da unter den Unixoiden Linux das Verbreitetste ist wird auch immer seltener auf POSIX-Konformität geachtet.

Woher ich das weiß:Berufserfahrung – Berufserfahrung