Impossible d'exécuter «mysql»: aucun fichier ou répertoire de ce type, à l'aide de autoexpect

2

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'"
Andrey Yasinishyn
la source
1
Je dois poser la question évidente ... Le client mysql est-il installé?
Joni
Oui définitivement. sudo /usr/local/mysql/support-files/mysql.server restart Shutting down MySQL .. SUCCESS! Starting MySQL .... SUCCESS!
Andrey Yasinishyn
La mysqlcommande est-elle dans votre $PATHlorsque vous exécutez le script?
Barmar
@Barmar. Je ne sais pas vraiment. Comment puis-je vérifier ??
Andrey Yasinishyn
1
Que se passe-t-il si vous tapez simplement à mysqlpartir du shell au lieu d'exécuter le script?
Barmar

Réponses:

3

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.

Compagnon Geek
la source
1

Assurez-vous que votre binaire mysql est dans votre variable $ PATH. Vous pouvez vérifier cela en exécutant

echo $PATH;

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

spawn /usr/bin/mysql -h $db_host -u $db_user -p $db_pass 'create database $new_db_name'
Shain Padmajan
la source