我在从终端运行 mysql 时遇到一些问题:
macmini:~ michael$ which mysql
/Applications/XAMPP/xamppfiles/bin/mysql
macmini:~ michael$ mysql
-bash: /usr/local/mysql/bin/mysql: No such file or directory
我之前在 /usr/local/mysql/bin/mysql 进行了安装,但现在它已不存在了。
我的路径变量如下:
macmini:~ michael$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/Applications/XAMPP/xamppfiles/bin/:/usr/local/bin:/usr/X11/bin:/usr/local/MacGPG2/bin:/usr/texbin
降到根目录似乎功能正常:
macmini:~ michael$ sudo bash
Password:
bash-3.2# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 66
Server version: 5.1.44 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
我似乎已经找到了问题 - 但我不知道如何更改或删除这个别名
macmini:~ michael$ type -a mysql
mysql is aliased to `/usr/local/mysql/bin/mysql'
mysql is /Applications/XAMPP/xamppfiles/bin/mysql
mysql is /Applications/XAMPP/xamppfiles/bin/mysql
答案1
检查~/.bash_profile
或~/.profile
查找如下命令:
alias mysql='/usr/local/mysql/bin/mysql'
将其删除,然后重新加载 shell。
答案2
尝试hash mysql
或hash -r
清除命令查找结构:
hash [-lr] [-p 文件名] [-dt] [名称]
对于每个名称,通过搜索 $PATH 中的目录来确定命令的完整文件名并记住它。如果指定了 -p 选项,则不执行路径搜索,并且将 filename 用作命令的完整文件名。-r 选项使 shell 忘记所有记住的位置。-d 选项使 shell 忘记每个名称的记住位置。如果指定了 -t 选项,则打印每个名称对应的完整路径名。如果使用 -t 指定了多个名称参数,则在散列的完整路径名之前打印名称。-l 选项使输出以可重用为输入的格式显示。如果没有给出参数,或者只提供了 -l,则打印有关记住的命令的信息。除非未找到名称或提供了无效的选项,否则返回状态为 true。
请注意,您可以使用hash -t mysql
来验证缓存路径查找是否确实不正确。
如果hash -t
显示选择了正确的路径但仍然不起作用,则下一步是检查别名和函数。使用以下命令测试别名:
alias mysql
这将打印-bash: alias: mysql: not found
或显示别名定义。如果定义了mysql
别名,则必须在~/.bash*
、~/.profile
和/etc/profile
文件中查找它。
使用以下命令检查 bash 函数定义:
shopt -s extdebug
typeset -fF mysql
shopt -u extdebug
这将设置extdebug
shell 选项,然后向 bash 询问函数(mysql
如果存在),它将包含其定义的位置mysql 42 /Users/foo/.bash_profile
或类似内容(函数名、行号、文件)。
如果存在别名或函数,请将其从定义它的文件中删除,并可选择将其从当前 shell 中删除:
unalias mysql
unset -f mysql
unalias
删除别名定义、unset -f
函数定义。