Предоставление команды без полного пути действительно работает без пути к исполняемому файлу, только если его в ваших переменных пути - согласно документам mysql, вам нужно добавить PATH=$:/usr/local/mysql/bin
к своему пути - в .bashrc для интерактивных оболочек или .bash_profiles для не интерактивные.
не удалось выполнить «mysql»: нет такого файла или каталога, используя autoexpect
6274
Andrey Yasinishyn
У меня есть следующий файл: 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'"
что говорит "какой MySQL"? может быть, что MySQL не на вашем пути?
Journeyman Geek 10 лет назад
0
@ Journeyman Geek Это пусто, но вы правы, это не на моем пути. Набирая mysql, я получаю сообщение об ошибке `mysql -bash: mysql: команда не найдена`. Поэтому мне нужно добавить его в путь.
Andrey Yasinishyn 10 лет назад
0
хм, который обычно должен давать полный путь, IIRC, он вообще установлен?
Journeyman Geek 10 лет назад
0
Да, это. Я добавил mysql commans на мой путь, и это работает.
Andrey Yasinishyn 10 лет назад
0
Я должен спросить очевидное ... Клиент mysql установлен?
Joni 10 лет назад
1
Определенно да. `sudo /usr/local/mysql/support-files/mysql.server restart Завершение работы MySQL .. УСПЕХ! Запуск MySQL .... УСПЕХА! `
Andrey Yasinishyn 10 лет назад
0
Есть ли команда `mysql` в вашем` $ PATH` при запуске скрипта?
Barmar 10 лет назад
0
@Barmar. Не знаю на самом деле. Как я могу это проверить ??
Andrey Yasinishyn 10 лет назад
0
Что произойдет, если вы просто наберете `mysql` из оболочки вместо запуска скрипта?
Barmar 10 лет назад
1
`echo $ PATH` и посмотрите, содержит ли он каталог, в котором установлен исполняемый файл mysql?
Barmar 10 лет назад
0
Это сервер MySQL *, который я спросил о * клиенте *.
Joni 10 лет назад
0
Я извиняюсь .. Это моя ошибка `mysql -bash: mysql: команда не найдена`
Andrey Yasinishyn 10 лет назад
0
Кстати, так как вы указываете пароль в командной строке, он не будет запрашивать пароль, поэтому вы не должны "ожидать" пароль: "`.
Barmar 10 лет назад
0
@Barmar. Можете ли вы опубликовать ответ как ответ?
Andrey Yasinishyn 10 лет назад
0
Я не дал ответа, я только задавал вопросы, что я должен написать?
Barmar 10 лет назад
0
@Barmar. Но ваш вопрос был ключом к решению. Спасибо за помощь.
Andrey Yasinishyn 10 лет назад
0
2 ответа на вопрос
3
Journeyman Geek
1
Shain Padmajan
Убедитесь, что ваш двоичный файл 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'
Похожие вопросы
-
1
Невозможно указать параметры для cvlc в скрипте
-
1
Обрабатывать имя файла с пробелами внутри Bash-скрипта
-
3
Обрабатывать каждую строку файла в bash
-
-
2
Сценарий оболочки для переименования нескольких файлов из имени их родительских папок
-
3
Выполните команду и поместите результаты в переменную ... все в сценарии bash
-
2
Почему я не могу удалить файл с помощью скрипта Bash?
-
2
Использование сценария Awk
-
1
start-stop-daemon работает в командной строке, но не работает в скрипте /etc/init.d
-
1
Как написать скрипт для изящной программы 'quit', так как 'kill' оставляет беспорядок
-
2
Ожидайте: Изменить поведение Ctrl-C