3

У меня есть некоторые проблемы с запуском 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

Удаление в root, кажется, работает правильно:

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

2 ответа2

3

Проверьте ~/.bash_profile или ~/.profile для такой команды:

alias mysql='/usr/local/mysql/bin/mysql'

Удалите его, затем перезагрузите оболочку.

0

Попробуйте hash mysql или hash -r чтобы очистить структуру поиска команд:

хэш [-lr] [-p имя файла] [-dt] [имя]

Для каждого имени полное имя файла команды определяется путем поиска в каталогах в $ PATH и запоминается. Если указана опция -p, поиск пути не выполняется, а имя файла используется в качестве полного имени файла команды. Опция -r заставляет оболочку забыть все запомненные места. Опция -d заставляет оболочку забыть запоминаемое расположение каждого имени. Если указана опция -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 , а затем запрашивает у bash функцию mysql которая, если она существует, будет включать, где она определена как mysql 42 /Users/foo/.bash_profile или аналогичный (имя функции, номер строки, файл).

Если существует псевдоним или функция, удалите его из определяющего его файла и при необходимости удалите его из текущей оболочки с помощью:

unalias mysql
unset -f mysql

unalias удаляет определение псевдонима, unset -f определение функции.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .