Wenn Sie einen Befehl ohne vollständigen Pfad angeben, funktioniert er nur dann wirklich ohne Pfad zur ausführbaren Datei, wenn er sich in Ihren Pfadvariablen befindet. Gemäß den mysql-Dokumenten müssen Sie PATH=$:/usr/local/mysql/bin
Ihren Pfad hinzufügen - in .bashrc für interaktive Shells oder .bash_profiles für non interaktive.
"mysql" konnte nicht ausgeführt werden: Keine solche Datei oder Verzeichnis mit Autoexpect
6381
Andrey Yasinishyn
Ich habe die folgende Datei: exp.exp
#!/usr/bin/expect db_host='localhost' db_name='webui_dev' db_user='root' db_pass='rootpass' new_db_name='db_2011' expect <<EOF log_user 0 spawn mysql -h $db_host -u $db_user -p $db_pass 'create database $new_db_name' expect "password:" send "$db_pass\r" log_user 1 expect eof EOF
Ich mache es ausführbar durch sudo chmod +x script/year_changer/create_db.exp
, aber wenn ich versuche, es auszuführen, bekomme ich einen Fehler:
couldn't execute "mysql": no such file or directory while executing "spawn mysql -h localhost -u root -p rootpass 'create database db_2011'"
Was sagt "welche MySQL"? kann es sein, dass sich mysql nicht in deinem Weg befindet?
Journeyman Geek vor 11 Jahren
0
@Journeyman Geek It's blank, but you are right, it isn't in my path. By typing mysql I reseive an error `mysql -bash: mysql: command not found`. So I need to add it to the path.
Andrey Yasinishyn vor 11 Jahren
0
hm, das sollte normalerweise einen vollständigen Pfad geben, IIRC, ist es überhaupt installiert?
Journeyman Geek vor 11 Jahren
0
Ja, so ist es. Ich habe Mysql Commans zu meinem Pfad hinzugefügt und es funktioniert.
Andrey Yasinishyn vor 11 Jahren
0
Ich muss das Offensichtliche fragen ... Ist der MySQL-Client installiert?
Joni vor 11 Jahren
1
Yes definitely. `sudo /usr/local/mysql/support-files/mysql.server restart Shutting down MySQL .. SUCCESS! Starting MySQL .... SUCCESS! `
Andrey Yasinishyn vor 11 Jahren
0
Befindet sich der `mysql`-Befehl in Ihrem` $ PATH`, wenn Sie das Skript ausführen?
Barmar vor 11 Jahren
0
@Barmar. Weiß es nicht wirklich. Wie kann ich das überprüfen?
Andrey Yasinishyn vor 11 Jahren
0
Was passiert, wenn Sie einfach `mysql` aus der Shell eingeben, anstatt das Skript auszuführen?
Barmar vor 11 Jahren
1
`echo $ PATH` und sehen, ob es das Verzeichnis enthält, in dem die ausführbare Datei` mysql` installiert ist?
Barmar vor 11 Jahren
0
Das ist der MySQL * Server *, den ich nach dem * Client * gefragt habe.
Joni vor 11 Jahren
0
I'm sorry.. It's my mistake `mysql -bash: mysql: command not found`
Andrey Yasinishyn vor 11 Jahren
0
Übrigens, da Sie das Passwort in der Befehlszeile angeben, werden Sie nicht zur Eingabe des Passworts aufgefordert. Daher sollten Sie nicht mit "password:" `rechnen.
Barmar vor 11 Jahren
0
@Barmar. Kannst du deine Antwort als Antwort posten?
Andrey Yasinishyn vor 11 Jahren
0
Ich habe keine Antwort gegeben, ich habe nur Fragen gestellt, was soll ich posten?
Barmar vor 11 Jahren
0
@Barmar. Aber Ihre Frage war ein Hinweis auf die Lösung. Danke für die Hilfe.
Andrey Yasinishyn vor 11 Jahren
0
2 Antworten auf die Frage
3
Journeyman Geek
1
Shain Padmajan
Stellen Sie sicher, dass sich Ihre mysql-Binärdatei in Ihrer $ PATH-Variablen befindet. Sie können dies durch Ausführen überprüfen
echo $PATH;
Wenn Sie den Pfad zu Ihrer mysql-Binärdatei dort nicht sehen, müssen Sie die PATH-Variable ändern und den Pfad zu Ihrer mysql-Binärdatei in der Datei ~ / .bash_profile oder ~ / .bash_rc hinzufügen, um sie bei der Anmeldung global verfügbar zu machen
Sie können alternativ den vollständigen Pfad zu Ihrer mysql-Binärdatei in Ihrem Code verwenden. Zum Beispiel
spawn /usr/bin/mysql -h $db_host -u $db_user -p $db_pass 'create database $new_db_name'
Verwandte Probleme
-
1
Parameter für cvlc können nicht in einem Skript angegeben werden
-
1
Dateiname mit Leerzeichen in Bash-Skript behandeln
-
3
Verarbeiten Sie jede Zeile einer Datei in Bash
-
2
Shell-Skript zum Umbenennen mehrerer Dateien aus dem Namen ihrer übergeordneten Ordner
-
3
Führen Sie einen Befehl aus und fügen Sie die Ergebnisse in eine Variable ein ... alles in einem Bas...
-
2
Warum kann ich eine Datei mit einem Bash-Skript nicht löschen?
-
2
Awk-Skriptverwendung
-
1
start-stop-daemon funktioniert in der Befehlszeile, aber nicht im Skript /etc/init.d
-
1
Wie man ein Skript für ein elegantes Programm "Beenden" als "Kill" hinterlässt, hinterlässt ein Durc...
-
2
Erwarten Sie: Ändern Sie das Verhalten von Strg-C