无法执行“mysql”:没有这样的文件或目录,使用 autoexpect

无法执行“mysql”:没有这样的文件或目录,使用 autoexpect

我有以下文件: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'

相关内容