não pôde executar o “mysql”: nenhum arquivo ou diretório, usando o autoexpect

2

Eu tenho o seguinte arquivo: 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

Tornei-o executável por sudo chmod +x script/year_changer/create_db.exp , mas, se eu tentar executá-lo, recebo um erro:

couldn't execute "mysql": no such file or directory
    while executing
"spawn mysql -h localhost  -u root -p rootpass  'create database db_2011'"
    
por Andrey Yasinishyn 12.09.2013 / 08:06

2 respostas

3

Dar um comando, sem um caminho completo, só funciona realmente sem um caminho para o executável se estiver nas variáveis do caminho - como os documentos do mysql , você precisa adicionar PATH=${PATH}:/usr/local/mysql/bin ao seu caminho - em .bashrc para shells interativos ou .bash_profiles para não interativos.

    
por 12.09.2013 / 09:10
1

Verifique se o seu binário mysql está na sua variável $ PATH. Você pode verificar isso executando

echo $PATH;

Se você não encontrar o caminho para o seu binário mysql, você terá que modificar a variável PATH e adicionar o caminho ao seu binário mysql no arquivo ~ / .bash_profile ou ~ / .bash_rc para torná-lo disponível globalmente no login

Você pode alternativamente usar o caminho completo para o seu binário mysql no seu código. Por exemplo

spawn /usr/bin/mysql -h $db_host -u $db_user -p $db_pass 'create database $new_db_name'
    
por 12.09.2013 / 08:38