我有以下文件: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'"
答案1
给出一个没有完整路径的命令,只有在没有可执行文件路径的情况下,如果它在你的路径变量中才真正起作用-根据 mysql 文档,您需要将其添加PATH=${PATH}:/usr/local/mysql/bin
到您的路径中 - 对于交互式 shell,将其添加到 .bashrc 中;对于非交互式 shell,将其添加到 .bash_profiles 中。
答案2
确保你的 mysql 二进制文件在你的 $PATH 变量中。你可以通过执行以下命令来检查
echo $PATH;
如果你在那里没有看到 mysql 二进制文件的路径,你必须修改 PATH 变量,并在 ~/.bash_profile 或 ~/.bash_rc 文件中将 mysql 二进制文件的路径添加到其中,以使其在登录时全局可用
您也可以在代码中使用 mysql 二进制文件的完整路径。例如
spawn /usr/bin/mysql -h $db_host -u $db_user -p $db_pass 'create database $new_db_name'