Не удалось выполнить "mysql": нет такого файла или каталога, используя автоэкспертизу
У меня есть следующий файл: 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
Я делаю его исполняемым sudo chmod +x script/year_changer/create_db.exp
, но если я пытаюсь выполнить его, я получаю сообщение об ошибке:
couldn't execute "mysql": no such file or directory
while executing
"spawn mysql -h localhost -u root -p rootpass 'create database db_2011'"
2 ответа
Предоставление команды без полного пути действительно работает без пути к исполняемому файлу, только если он указан в переменных пути - согласно документации mysql, вам нужно добавить PATH=${PATH}:/usr/local/mysql/bin
на ваш путь - в.bashrc для интерактивных оболочек или.bash_profiles для неинтерактивных.
Убедитесь, что ваш двоичный файл mysql находится в переменной $PATH. Вы можете проверить это, выполнив
echo $PATH;
Если вы не видите путь к вашему двоичному файлу mysql, вам придется изменить переменную PATH и добавить путь к вашему двоичному файлу mysql в файле ~/.bash_profile или ~/.bash_rc, чтобы сделать его доступным глобально при входе в систему.
В качестве альтернативы вы можете использовать полный путь к вашему бинарному файлу mysql в вашем коде. Например
spawn /usr/bin/mysql -h $db_host -u $db_user -p $db_pass 'create database $new_db_name'