Моя ОС - Fedora Linux 14.

Я пишу программу с Code::Blocks IDE, и она компилирует мою программу с GCC.

Моя программа вывода test . Когда я запускаю свое приложение в Code::Blocks, оно запускается нормально. Но когда я дважды щелкаю на моей исполняемой программе, программа не запускается. Когда я запускаю терминал (по пути к моей двоичной программе) и печатаю команду test , моя программа не запускается, но, когда я ./test в терминале, она запускается нормально. Почему я должен печатать ./ когда я хочу запустить приложение?

4 ответа4

8

./ необходим, когда переменная окружения PATH не включает текущий каталог. Так что если у вас есть исполняемый файл в каком-то каталоге, который не находится на вашем пути, вам нужно ./theexecutable чтобы сообщить оболочке, что ваш исполняемый файл находится в текущем каталоге.

4

Просто потому, что текущий каталог . , обычно не включается в переменную PATH.

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

2

Когда вы просто набираете имя программы, * nix проверит все ваши местоположения PATH на наличие этого имени. Если он не найдет его, он не запустится. Поэтому вы должны ввести «./», чтобы указать текущий каталог.

0

В дополнение к тому, что говорят другие ответы:

Когда вы печатаете test , вы, вероятно, вызываете /bin/test ; man test детали.

Когда вы дважды щелкаете по исполняемому файлу (из nautilus или чего-то подобного, да?), Он, вероятно, запускается, но без терминала вы не видите вывод.

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