OSX Lion 中的 $PATH 问题

OSX Lion 中的 $PATH 问题

我在从终端运行 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 mysqlhash -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

这将设置extdebugshell 选项,然后向 bash 询问函数(mysql如果存在),它将包含其定义的位置mysql 42 /Users/foo/.bash_profile或类似内容(函数名、行号、文件)。

如果存在别名或函数,请将其从定义它的文件中删除,并可选择将其从当前 shell 中删除:

unalias mysql
unset -f mysql

unalias删除别名定义、unset -f函数定义。

相关内容