Не удалось выполнить "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'
Другие вопросы по тегам