mysql - 从 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。
谢谢您的帮助。
解决方案
ls
实际上是/bin/ls
一个可执行文件,并在您的 PATH 变量中定义。MySQL 不运行你的.bashrc
文件,所以它不知道这个函数。
将您的函数修改为脚本,并确保它的路径包含在您的 PATH 变量中。
例如: file /home/youruser/sel1
,具有可执行权限:
#!/bin/bash
echo "select * from table limit 1;"
将“/home/youruser”放入您的 PATH 变量中。然后你就可以运行它了。