Зачем мне нужно ./ для команд для запуска на Mountain Lion? [Дубликат]


3

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

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

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

./mysql -u itsme -p

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

./myawesomeapp dothis

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


1
@cdhowie Это вопрос программирования, если он возникает при сборке исполняемого файла в командной строке.
Potatoswatter

1
@Potatoswatter Нет, это не так. Это ошибочная логика. Я мог бы использовать тот же аргумент, чтобы утверждать, что практически любая связанная с компьютером тема относится к теме SO.
cdhowie

Ответы:


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


Тильда ~может не всегда расширяться, вызывая разочарование. Его замена выполняется программами оболочки, в то время как могут использоваться различные другие типы сред PATH.
Potatoswatter

Хорошая точка зрения. Так что может быть лучше выписать /home/mats/bin- редактирование ...
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.