问题答案
mysql版本5.5.3-m3,操作系统版本CentOS6.4_X64,mysql编译安装在 /usr/mysql/目录下,我在任意目录使用
/usr/mysql/bin/mysqld_safe --defaults-file=/data/mysql/my.cnf
这样启动mysql后会报错,mysql.err日志中显示
[ERROR] /usr/mysql/sbin/mysqld: unknown option '--​'
[ERROR] Aborting
InnoDB: Starting shutdown...
而当我进入到目录,直接执行脚本
cd /usr/mysql/bin/
mysqld_safe --defaults-file=/data/mysql/my.cnf
同意无法启动mysq,mysql.err日志文件显示
[ERROR] /usr/libexec/mysqld: unknown option '--​'
[ERROR] Aborting
InnoDB: Starting shutdown...
为什么执行同样的脚本,一个使用绝对路径,一个在当前目录,会定位到不同的mysqld,它们具体有什么区别吗?
标签: MySQL
答案
用 which mysqld_safe 命令看看shell从 $PATH 全局变量中找到的 mysqld_safe 所在的绝对路径就知道为什么会有两个mysqld_safe了。另外如果你的$PATH的内容里是类似下面的情况:
PATH=/usr/libexec:/usr/bin:...
那么shell会从/usr/libexec中寻找mysqld_safe程序。另外你的/usr/mysql/bin如果不再PATH里,那么你在shell里输入mysqld_safe会从/usr/libexec中寻找mysqld_safe程序。
另外,你可以用 ls -l /usr/libexec/mysqld_safe 命令查看一下这个程序是不是一个软连接,很有可能 /usr/libexec/mysqld_safe 会软连接到/usr/mysql/bin/mysqld_safe。
举一反三