Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden von Mysql in der Befehlszeile in osx - Befehl nicht gefunden?

Es gibt also nur wenige Orte, an denen das Terminal nach Befehlen sucht. Diese Orte werden in Ihrem $PATH gespeichert Variable. Stellen Sie es sich als eine globale Variable vor, bei der das Terminal iteriert, um nach einem beliebigen Befehl zu suchen. Dies sind normalerweise Binärdateien, die so aussehen, wie der /bin-Ordner normalerweise referenziert wird.

/bin Der Ordner enthält viele ausführbare Dateien. Es stellt sich heraus, dass dies ein Befehl ist. Diese verschiedenen Ordnerspeicherorte werden in einer globalen Variablen gespeichert, z. B. $PATH getrennt durch :

Jetzt kümmern sich Programme normalerweise bei der Installation um die Aktualisierung von PATH &sagen Sie Ihrem Terminal, dass ich alle Befehle in meinem bin sein kann Mappe.

Es stellt sich heraus, dass MySql dies bei der Installation nicht tut, also müssen wir es manuell tun.

Wir tun dies mit dem folgenden Befehl,

export PATH=$PATH:/usr/local/mysql/bin

Wenn Sie es zerlegen, export ist selbsterklärend. Betrachten Sie es als eine Aufgabe. Also export eine Variable PATH mit altem Wert $PATH concat mit new bin also /usr/local/mysql/bin

Auf diese Weise nach dem Ausführen aller Befehle in /usr/local/mysql/bin stehen uns zur Verfügung.

Hier gibt es einen kleinen Haken. Stellen Sie sich ein Terminalfenster als eine Instanz eines Programms und vielleicht so etwas wie $PATH vor ist Klassenvariable (vielleicht). Beachten Sie, dass dies eine reine Annahme ist. Beim Schließen verlieren wir also die neue Zuweisung. Und wenn wir das Terminal erneut öffnen, haben wir keinen Zugriff mehr auf unseren Befehl, da er beim letzten Export im primären Speicher gespeichert wurde, der flüchtig ist.

Jetzt müssen wir unsere MySQL-Binärdateien jedes Mal exportieren, wenn wir das Terminal verwenden. Also müssen wir concat auf unserem Weg beharren.

Sie wissen vielleicht, dass unser Terminal etwas namens dotfiles verwendet um die Konfiguration bei der Terminalinitialisierung zu laden. Ich stelle es mir gerne als Sätze von Dingen vor, die jedes Mal an den Konstrukteur übergeben werden, wenn eine neue Instanz von Terminal erstellt wird (wiederum eine Annahme, aber nahe an dem, was es tun könnte). Also ja, Sie haben jetzt verstanden, was wir tun werden.

.bash_profile ist eines der wichtigsten bekannten dotfile .

Also im folgenden Befehl,

echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile

Wir speichern das Ergebnis von echo d.h. Ausgabestring an ~/.bash_profile

Wie wir oben bereits erwähnt haben, öffnen wir jedes Mal, wenn wir ein Terminal oder eine Terminalinstanz öffnen, unsere dotfiles geladen sind. Also .bash_profile geladen bzw. export das wir oben angehängt haben, wird ausgeführt &somit unser globaler $PATH wird aktualisiert und wir erhalten alle Befehle in /usr/local/mysql/bin .

Ps.

wenn Sie den ersten Befehlsexport nicht direkt ausführen, sondern nur den zweiten ausführen, um ihn beizubehalten? Dann müssen Sie für die aktuell laufende Instanz des Terminals,

source ~/.bash_profile

Dies weist unser Terminal an, diese bestimmte Datei neu zu laden.