Зачем мне нужен ./ для выполнения команд на Mountain Lion?

Зачем мне нужен ./ для выполнения команд на Mountain Lion?

Возможный дубликат:
Что означают «/», «./», «../» при указании пути?

Зачем мне нужно ./запускать команды на Mountain Lion?

Например, при использовании mysql мне приходится вводить в терминале:

./mysql -u itsme -p

Кроме того, я создаю приложения командной строки и делаю свои файлы исполняемыми, и мне приходится запускать команду ./, например, так...

./myawesomeapp dothis

Я понимаю, ./что это текущий каталог, но как можно запускать команды без его использования?

решение1

Если вы поместите каталог с вашими двоичными файлами в PATHпеременную окружения, вы сможете вызывать их без указания пути (т. е ./. )

Я предполагаю, что вы, вероятно, используете bash в качестве оболочки (вы можете проверить, запустив echo $SHELL). Если это так, добавьте следующее в свой.bashrc

export PATH=$PATH:/whatever/path/you/want/to/add

решение2

Вам необходимо установить исполняемый файл в один из каталогов, перечисленных в переменной среды $PATH.

echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Отрегулируйте $PATH, изменив свой ~/.profileфайл.

export PATH=$PATH:/Users/me/bin

Можно отказаться от ./always, добавив .к $PATH, но это может стать проблемой безопасности — если не на вашем личном компьютере, то, если вы перенесете эту плохую привычку на сервер.

решение3

Хотя можно добавлять .в переменную $PATH, настоятельно рекомендуется НЕ делать этого. Если вы зайдете в какое-то случайное место в файловой системе и введете что-то, что, по вашему мнению, запустит программу ( vi, emacs, ls, ps, и т. д.), файл в локальном каталоге станет кандидатом на запуск. Если вам не повезет, это будет совсем НЕ та программа, которую вы хотели запустить - а если вы работаете как root, это еще хуже, потому что кто-то вполне может добавить локальный файл ls, который делает что-то совершенно иное, чем на самом деле ls(вместе с выполнением настоящего ls, конечно - в противном случае было бы очевидно, что это не настоящий ls, и пользователь начал бы разбираться в ситуации). [1]

Вместо этого вам следует добавить абсолютный путь к месту расположения исполняемых файлов, например /projects/mycurrentprojects/bin, или «относительно домашнего каталога», например ~/bin, если вы хотите, чтобы путь работал при ВСЕХ обстоятельствах, лучше использовать home\mats\bin[очевидно, используя правильное имя пользователя для себя]. Таким образом, будут применимы только файлы в определенном наборе каталогов, и независимо от того, где вы находитесь, только программы, находящиеся в этих конкретных каталогах, будут выбраны в качестве «возможных кандидатов для запуска».

[1] Да, я понимаю, что порядок поиска и другие факторы также будут иметь значение. Но добавлять «текущий каталог» — это, как правило, не очень хорошая идея, несмотря ни на какие возражения.

Связанный контент