首页 > 解决方案 > 从 mysql 执行时找不到 Linux Bash 自定义函数

问题描述

我是 linux shell 脚本的新手。我在 bashrc 文件中创建了一个函数sel1 。

function sel1(){
        echo "select * from table limit 1;"
}

从 bash 调用此函数时按预期工作我得到此输出

akshayk@AKSHAY-PC:/$ sel1
select * from table limit 1;

我还发现我们可以在 mysql 连接后运行 bash 命令,如下面的 ls 命令

mysql> \! ls
acct  bin  boot  cache  data  dev  etc  home  init  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

但是当我从 mysql 调用该函数时,它说找不到

mysql> \! sel1
sh: 1: sel1: not found - What could be the problem here ?

还有一种方法可以在光标位置获取函数的输出吗?

为了对此进行测试,我在 Windows 10 上使用 ubuntu bash。我计划运行这些命令的系统正在运行 CentOS。

谢谢您的帮助。

标签: mysqllinuxbashubuntuwindows-10

解决方案


ls实际上是/bin/ls一个可执行文件,并在您的 PATH 变量中定义。MySQL 不运行你的.bashrc文件,所以它不知道这个函数。

将您的函数修改为脚本,并确保它的路径包含在您的 PATH 变量中。

例如: file /home/youruser/sel1,具有可执行权限:

#!/bin/bash 
echo "select * from table limit 1;"

将“/home/youruser”放入您的 PATH 变量中。然后你就可以运行它了。


推荐阅读