базовый unix ./ синтаксис - PullRequest
0 голосов
/ 11 марта 2012

Я компилирую программы на С ++ из OS X Terminal:

> g++ a.cpp

Затем запускаю программу из терминала:

> ./a.out

Что делает ./ синтаксис значит?Это как-то связано с ./run?

Ответы [ 3 ]

7 голосов
/ 11 марта 2012

. означает «текущий каталог», поэтому ./a.out означает «файл с именем a.out в текущем каталоге». Если вы просто наберете a.out без ./, тогда система будет искать каталоги по пути ($PATH), чтобы найти программу, вместо того, чтобы искать в текущем каталоге.

2 голосов
/ 11 марта 2012

точка-косая черта - это просто относительный путь; он говорит оболочке запустить программу из каталога «точка», то есть из текущего рабочего каталога. это работает, только если в программе установлен бит исполнения (chmod + x a.out; компилятор обычно обрабатывает это за вас).

1 голос
/ 12 марта 2012

Во всех системах, когда вы вводите команду, система должна знать, где находится команда.Места, в которых она должна искать программу, перечислены в переменной окружения с именем PATH.Windows выполняет поиск в каталоге, в котором вы находитесь, а также в PATH (я полагаю, раньше, но я довольно долго не пользовался Windows), и если он находит исполняемый файл с правильным именем в текущем каталоге, он выполняет его,Windows считает эту «особенность» остальной частью компьютерного сообщества «недостатком безопасности».Следовательно, Unix-подобные среды не выполняют поиск в текущем каталоге, если он явно не указан в пути.Вы можете запустить что-то не в PATH, указав явный путь к нему.В Unix . является текущим каталогом, поэтому ./a.out указывает системе выполнить программу a.out, найденную в текущем каталоге.

...