J'ai le fichier suivant: 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
Je le rend exécutable par sudo chmod +x script/year_changer/create_db.exp
, mais si j'essaye de l'exécuter, j'obtiens une erreur:
couldn't execute "mysql": no such file or directory
while executing
"spawn mysql -h localhost -u root -p rootpass 'create database db_2011'"
bash-scripting
expect
Andrey Yasinishyn
la source
la source
sudo /usr/local/mysql/support-files/mysql.server restart Shutting down MySQL .. SUCCESS! Starting MySQL .... SUCCESS!
mysql
commande est-elle dans votre$PATH
lorsque vous exécutez le script?mysql
partir du shell au lieu d'exécuter le script?Réponses:
Donner une commande, sans chemin complet, ne fonctionne réellement sans chemin vers l’exécutable que si cela se trouve dans vos variables de chemin - comme dans la documentation mysql , vous devez ajouter
PATH=${PATH}:/usr/local/mysql/bin
à votre chemin - .bashrc pour les shells interactifs ou .bash_profiles pour les non les interactifs.la source
Assurez-vous que votre binaire mysql est dans votre variable $ PATH. Vous pouvez vérifier cela en exécutant
Si vous ne voyez pas le chemin de votre binaire mysql, vous devrez modifier la variable PATH et l'ajouter dans les fichiers ~ / .bash_profile ou ~ / .bash_rc pour le rendre disponible globalement lors de la connexion.
Vous pouvez également utiliser le chemin complet de votre binaire mysql dans votre code. Par exemple
la source