3

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

Зачем мне нужно ./ для команд для запуска на Mountain Lion?

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

./mysql -u itsme -p

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

./myawesomeapp dothis

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

3 ответа3

6

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

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

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

Вы должны установить исполняемый файл в один из каталогов, перечисленных в переменной среды $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

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

1

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

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

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

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