
Возможный дубликат:
Что означают «/», «./», «../» при указании пути?
Зачем мне нужно ./
запускать команды на 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] Да, я понимаю, что порядок поиска и другие факторы также будут иметь значение. Но добавлять «текущий каталог» — это, как правило, не очень хорошая идея, несмотря ни на какие возражения.