✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Eine Einführung in Bash für WordPress-Entwickler

15

Hin und wieder installiere ich eine Software über Composer oder die einige ihrer Binärdateien in anderen Verzeichnissen als den üblichen Orten ablegt, an denen macOS sie erwartet.

Das heißt, wenn Sie eine App in Terminal ausführen oder wenn eine Anwendung mit einer GUI erwartet, dass sie sich an einem bestimmten Ort auf der Festplatte befindet, wird sie sie wahrscheinlich an einem von fünf Orten erwarten:

  1. /usr/bin
  2. /Behälter
  3. /usr/sbin
  4. /sbin
  5. /usr/local/bin

Aber wie gesagt, im Laufe der Zeit installieren wir Dinge mit Tools von Drittanbietern, oder wir installieren Dinge, die Binärdateien außerhalb eines dieser Verzeichnisse platzieren.

Ein typisches Beispiel: Was passiert, wenn Sie WP-CLI global installieren möchten? Oder was ist, wenn Sie eine Version von MySQL verwenden möchten, die mit MAMP geliefert wird ?

In diesen Fällen werden diese Binärdateien nicht in eines der oben genannten Verzeichnisse aufgenommen. In diesem Fall müssen Sie Ihr Profil ändern. Wenn Sie das noch nie getan haben, kann es entmutigend sein. Und es kann chaotisch werden, wenn Sie es im Laufe der Zeit nicht methodisch tun.

Hier ist also eine Einführung in Bash für WordPress-Entwickler, was Ihr bash_profile ist und wie Sie Software von Drittanbietern damit verwalten.

Bash für WordPress-Entwickler

Bevor Sie sich mit dem Festlegen von Pfaden für andere Software und dergleichen befassen, ist es wichtig zu beachten, dass Sie möglicherweise kein bash_profile haben. Das heißt, wenn Sie ein Terminal verwenden, können Sie eine andere Art von Shell verwenden, und wenn dies der Fall ist, sind Sie diesem Beitrag bereits weit voraus.

Wenn Sie andererseits die Terminal-Shell ohne Änderungen verwenden, die mit macOS geliefert wird. Aber zuerst, was ist eine Muschel?

In der Computertechnik ist eine Shell eine Benutzerschnittstelle für den Zugriff auf die Dienste eines Betriebssystems. Im Allgemeinen verwenden Betriebssystem-Shells entweder eine Befehlszeilenschnittstelle (CLI) oder eine grafische Benutzerschnittstelle (GUI), abhängig von der Rolle eines Computers und einem bestimmten Betrieb.

Und wenn Sie Terminal ohne Änderungen verwenden, verwenden Sie wahrscheinlich Bash.

Schließlich werden alle Einstellungen für jeden Start von Terminal in der entsprechenden Profildatei der Shell gespeichert. In diesem Fall wird alles in .bash_profile gespeichert .

Um alles genau so einzurichten, wie wir es brauchen, müssen wir einige Änderungen vornehmen (oder es sogar initialisieren), um die Dinge zum Laufen zu bringen.

Beachten Sie , dass Sie nach jeder Änderung an .bash_profile Folgendes ausführen möchten:

$ source ~/.bash_profile

Alle neu eingeführten Änderungen werden also für Ihre aktuelle Terminalsitzung geladen.

Das Anfangsprofil

Wenn ich mein Anfangsprofil einrichte, sieht es immer gleich aus. Das heißt, es enthält die fünf Verzeichnisse, die ich oben aufgelistet habe :

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$PATH" export PATH

Sie werden jedoch am Ende der PATH -Variablen feststellen, dass es etwas gibt, das wie eine andere Variable aussieht. Konkret spreche ich von $PATH. Und es ist wichtig, dies zu verstehen, da es sich darauf auswirkt, wie Programme im Terminal gefunden werden.

Was ist $PATH?

Stellen Sie sich zunächst vor, es wäre eine Möglichkeit für die Shell oder das Betriebssystem, nach Binärdateien zu suchen. Wenn Sie also alle fünf der oben genannten Pfade definiert haben, wird das Betriebssystem in diesen Verzeichnissen nach bestimmten Binärdateien suchen.

Um es auszuprobieren, starten Sie das Terminal und geben Sie Folgendes ein:

$ which clear

Und dies zeigt Ihnen, wo es die  ausführbare Clear – Datei auf Ihrem System findet (wobei Clear nur den Terminalbildschirm löscht 🙂).

Beachten Sie als Nächstes, dass $PATH  im obigen Beispiel am Ende der Zeichenfolge definiert ist. Wenn Sie Ihr Profil ändern, werden Sie gerne damit arbeiten. Kurz gesagt, es definiert die Reihenfolge, in der Verzeichnisse durchsucht werden sollen.

Im Wesentlichen oben sucht das Terminal also nach einer Binärdatei, die mit dem übereinstimmt, was Sie ausführen möchten, beginnend in /usr/bin und endend in /usr/local/bin.

Was bedeutet „exportieren”?

Wenn Sie Bash nicht verwenden, kann ich das Äquivalent nicht kommentieren, aber im Kontext von Bash ist export eine Möglichkeit, den Wert explizit der im obigen Kern definierten PATH -Variablen zuzuweisen.

Das heißt, beim Programmieren erstellen wir normalerweise eine Variable und weisen ihr einen Wert zu. Das ist ähnlich. Wir sind jedoch etwas expliziter. Einfach ausgedrückt setzen wir eine Variable auf der linken Seite auf den Wert auf der rechten Seite. Und das wird mit Export eingestellt.

Wenn Sie also sehen möchten, was $PATH enthält, geben Sie Folgendes in Ihr Terminal ein:

$ echo $PATH

Dann sehen Sie den Wert der fünf bisher definierten Pfade.

Eine Einführung in Bash für WordPress-Entwickler

Im Laufe der Zeit wollen wir das aber natürlich noch ergänzen.

Komponistenpakete

Ich habe in früheren Beiträgen weltweit über die Installation von Composer und die Installation von Paketen gesprochen, die es verwenden. Aber nehmen wir an, dass wir aus Gründen der Argumentation WP-CLI installieren und es dann so hinzufügen möchten, dass es über das Terminal überall auf unserem System zugänglich ist. Und dies alles kann mit den obigen Profilinformationen erfolgen.

Angenommen, Sie haben Composer installiert und Ihre composer.json sieht so aus (zusammen mit ein paar anderen Dingen, aber ignorieren Sie sie vorerst):

{ "require": { "squizlabs/php_codesniffer": "2.9.1", "wp-cli/wp-cli": "~1.2.1", "psy/psysh": "~0.8.6" } }

Und du bist gelaufen:

$ composer update

Dann wurde WP-CLI installiert. Aber wenn Sie versuchen, es vom Terminal außerhalb seines Installationsverzeichnisses auszuführen, funktioniert es nicht. Also was gibt?

Eine Einführung in Bash für WordPress-Entwickler

Der Pfad zu den über Composer installierten Binärdateien ist nicht in unserem .bash_profile festgelegt. Um dies zu beheben, fügen Sie eine neue Zeile zu .bash_profile hinzu, aber stellen Sie sicher, dass Sie nichts bereits Existierendes neu definieren.

Da PATH existiert, können wir einfach $PATH an das Ende unserer neuen Zeile setzen und ihr unser Composer-Verzeichnis voranstellen. Auf diese Weise duplizieren wir keine Verzeichnisse oder Werte in der Variablen, wenn wir sie exportieren, und wir legen die Priorität fest, welche Verzeichnisse durchsucht werden.

Zum Beispiel :

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin" PATH="$HOME/.composer/vendor/bin:$PATH" export PATH

Wenn Sie dann versuchen, wp von einer beliebigen Stelle in der Befehlszeile aus auszuführen, sollte es funktionieren und Sie sollten Folgendes eingeben können:

$ which wp

Und sehen Sie, dass es aus dem Verzeichnis composer/vendor/bin kommt. Oh – und beachten Sie, dass $HOME eine Variable ist, die auf das Home-Verzeichnis des aktuellen Benutzers verweist. Dies kann geändert werden, aber es würde den Rahmen dieses Beitrags sprengen.

MAMP-Software

An diesem Punkt wird sich die Version von PHP, MySQL oder anderen Sprachen und Tools, für die Sie sich entscheiden, ändern. Ich habe einige verschiedene Posts rund um MAMP bereitgestellt (1, 2, 3 ), also entscheide ich mich für ein Beispiel.

Insbesondere möchte ich die MAMP-Version von PHP und MySQL verwenden – nicht die, die mit dem System geliefert wird. Aber an dieser Stelle können Sie Folgendes ausführen:

$ which php

Und:

$ which mysql

Und siehe, sie kommen beide aus Systemverzeichnissen. Dies muss geändert werden, damit unser Befehlszeilenzugriff dieselbe Version der Software verwendet, die unsere Anwendung verwendet.

Dazu können wir unserem .bash_profile die folgenden Zeilen hinzufügen :

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin" PATH="$PATH:$HOME/.composer/vendor/bin" PATH="/Applications/MAMP/bin/php/php7.1.0/bin:$PATH" export PATH

Hier gibt es jedoch etwas zu beachten: Ich habe das PHP-Binärverzeichnis von MAMP vor den Werten von $PATH platziert. Dies liegt daran, dass das System zuerst hier suchen soll (nicht in den Systemverzeichnissen).

Es gibt jedoch eine zweite Herausforderung. MAMP wird mit mehreren verschiedenen PHP-Versionen ausgeliefert, und die Wahrscheinlichkeit, dass wir jedes Mal dieselbe Version verwenden möchten, ist gering. Wir brauchen also eine Möglichkeit, die in MAMP ausgewählte Version zu verwenden, richtig?

Eine Möglichkeit, dies zu tun, ist die Verwendung eines Alias.

Was ist mit Aliassen?

Sie können sich Aliase als Abkürzungen vorstellen – es ist eine schnelle Möglichkeit, einen bestimmten Befehl oder ein bestimmtes Programm auszuführen, ohne einen vollständig qualifizierten Namen für ein Programm eingeben zu müssen.

Im Fall von MAMP und PHP gibt es einige PHP-Versionen, die wir verwenden könnten. Zum Zeitpunkt dieses Schreibens habe ich:

  • 5.4.45
  • 5.5.38
  • 5.6.28
  • 7.0.13
  • 7.1.0

Alle auf meinem System verfügbar. Wahrscheinlich möchte ich nicht alle verwenden (und auch nicht alle in meinem $PATH haben ), aber es kann vorkommen, dass ich eine frühere Version von PHP ausführen möchte, um etwas Bestimmtes zu testen.

Wie können wir das tun? Wir können Aliase verwenden. Und wenn Sie zu /Applications/MAMP/bin/php  navigieren, sollten Sie alle Versionen von PHP sehen, die in Ihrer Version von MAMP enthalten sind.

Eine Einführung in Bash für WordPress-Entwickler

Jetzt richten wir Aliase für jeden davon ein:

## Aliases to old versions of PHP. alias php54="/Applications/MAMP/bin/php/php5.4.45/bin/php" alias php55="/Applications/MAMP/bin/php/php5.5.38/bin/php" alias php56="/Applications/MAMP/bin/php/php5.6.28/bin/php" alias php70="/Applications/MAMP/bin/php/php7.0.13/bin/php"

Und wir können jeden von ihnen unabhängig voneinander im Terminal ausführen, indem wir einen Befehl wie den folgenden ausführen:

$ php54 -v

Dies sollte Ihnen zeigen, welche Version von PHP basierend auf dem Alias ​​ausgeführt wird, den Sie in .bash_profile definiert haben .

Beachten Sie schließlich, dass Sie im letzten Kern eine Zeile sehen, die zu .bash_profile hinzugefügt wurde :

source ~/.profile

Dies wird vom System automatisch durchgeführt, insbesondere wenn Sie beginnen, mit einer interaktiven Shell zu arbeiten. Sie können es löschen, aber es wird wieder oben in der Datei hinzugefügt, also schwitzen Sie nicht.

Und als Referenz sieht die endgültige Version meiner .bash_profile so aus :

source ~/.profile PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin" # The standard system binaries PATH="$HOME/.composer/vendor/bin:$PATH" # Composer binaries PATH="/Applications/MAMP/bin/php/php7.1.0/bin:$PATH" # MAMP's PHP7 loaded first PATH="/Applications/MAMP/Library/bin:$PATH" # MAMP's MySQL loaded first ## Aliases to old versions of PHP. alias php54="/Applications/MAMP/bin/php/php5.4.45/bin/php" alias php55="/Applications/MAMP/bin/php/php5.5.38/bin/php" alias php56="/Applications/MAMP/bin/php/php5.6.28/bin/php" alias php70="/Applications/MAMP/bin/php/php7.0.13/bin/php" export PATH

Sie werden sehen, dass ich auch Zeilen für MySQL und MySQLAdmin direkt über der Zeile hinzugefügt habe, die die Aliase definiert (obwohl Ihre wahrscheinlich anders aussehen wird).

Unabhängig davon ist dies eine allgemeine Idee, obwohl Ihre wahrscheinlich anders aussehen wird.

Fortgeschritteneres Bash

Es gibt Leute, die in Bash weitaus fortgeschrittener sind als ich (und selbst das Durchsuchen anderer Websites nach dem, was einige Leute getan haben, kann beeindruckend sein).

Aber wenn Sie ein WordPress-Entwickler sind, der wenig bis gar keine Kenntnisse über Bash, Befehlszeilen-Tools, das Festlegen von Pfaden usw. hat, dann sollte dies eine funktionierende Referenz und ein anständiger Ausgangspunkt sein.

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen