Ответ 1
Итак, есть несколько мест, где терминал ищет команды. Эти места хранятся в переменной $PATH
. Подумайте об этом как о глобальной переменной, где терминал выполняет итерацию для поиска любой команды. Обычно это двоичные файлы, как обычно ссылаются на папку /bin.
/bin
есть много исполняемых файлов внутри. Оказывается, это команда. Эти разные местоположения папок хранятся внутри одной глобальной переменной i.e. $PATH
, разделенной символом :
Теперь обычно программы при установке заботятся об обновлении PATH
и сообщают вашему терминалу, что я могу быть всеми командами внутри моей папки bin
.
Оказывается, MySql не делает этого при установке, поэтому мы вручную должны это делать.
Мы делаем это, следуя команде,
export PATH=$PATH:/usr/local/mysql/bin
Если вы сломаете его, export
будет самоочевидным. Подумайте об этом как о назначении. Итак export
переменная PATH
со значением old $PATH
concat с новым bin
i.e. /usr/local/mysql/bin
Таким образом, после выполнения команды все команды внутри /usr/local/mysql/bin
доступны нам.
Здесь есть небольшой улов. Подумайте о одном окне терминала как о одном экземпляре программы, и, возможно, что-то вроде $PATH
является переменной класса (возможно). Обратите внимание, что это чистое предположение. Поэтому после закрытия мы теряем новое задание. И если мы снова откроем терминал, у нас не будет доступа к нашей команде еще раз, потому что последний раз, когда мы экспортировали, он был сохранен в первичной памяти, которая нестабильна.
Теперь нам нужно, чтобы наши бинарные файлы mysql экспортировались каждый раз, когда мы используем терминал. Таким образом, мы должны сохраняться CONCAT на нашем пути.
Возможно, вам известно, что наш терминал использует что-то под названием dotfiles
для загрузки конфигурации при инициализации терминала. Мне нравится думать о нем как о наборах вещей, переданных конструктору каждый раз, когда создается новый экземпляр терминала (опять же предположение, но близко к тому, что он может делать). Итак, да, теперь вы понимаете, что мы собираемся сделать.
.bash_profile
является одним из основных известных dotfile
.
Итак, в следующей команде
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile
Что мы делаем, это сохранение результата echo
, то есть выходной строки в ~/.bash_profile
Итак, теперь, как мы отметили выше, каждый раз мы открываем терминал или экземпляр терминала, загружаются наши dotfiles
. Таким образом, загружается .bash_profile
и export
, который мы добавили выше, и, таким образом, обновляется наш глобальный $PATH
, и мы получаем все команды внутри /usr/local/mysql/bin
.
P.s.
если вы не запускаете первый экспорт команд напрямую, а просто выполняете второй, чтобы сохранить его? Если для текущего текущего экземпляра терминала вам нужно,
source ~/.bash_profile
Это говорит нашему терминалу о перезагрузке этого конкретного файла.