Разница между a.out и ./a.out

Моя путаница

a.out – это вывод программ, которые я выполняю в своем Ubuntu 12.10. В системе Red Hat, когда я выполняю a.out в терминале, он выполняется. Хотя в Ubuntu я должен выполнить ./a.out чтобы получить выход. «a.out» не работает.

Может ли кто-нибудь объяснить, в чем разница между командами?

  • Создание многоадресного соединения для tcpdump-захватов
  • как удалить 0 (ноль) со дня и месяца, но не с года (01/09/2012), используя в Linux (Redhat)
  • nohup отправляет eof (или некоторые другие данные) информацию о моем приложении при работе рекурсивно. Как остановить или вообще не отправлять?
  • Инструмент ack.pl и флаги ack.pl
  • Как увеличить таймер перед вращением диска?
  • Как я могу использовать драйвер часов kvm-clock?
  • Команды окраски терминала (например, LS и CD)
  • Где спящий режим возобновляет получение узла устройства?
  • One Solution collect form web for “Разница между a.out и ./a.out”

    Поведение, которое вы испытываете, зависит, скорее всего, от различий в переменной среды $PATH . $PATH – это, по сути, список каталогов, разделенных двоеточиями, которые выполняются для определенного исполняемого файла, когда программа вызывается с использованием вызова операционной системы exec . $PATH может содержать относительные компоненты пути, как правило . или пустую строку, которые относятся к текущему рабочему каталогу. Если текущий каталог является частью $PATH , файлы в текущем рабочем каталоге могут быть выполнены только по их имени, например a.out . Если текущий каталог не находится в $PATH , необходимо указать относительный или абсолютный путь к исполняемому файлу, например ./a.out .

    Наличие относительных компонентов пути в $PATH имеет потенциальные последствия для безопасности, поскольку исполняемые файлы в каталогах ранее в $PATH затмевают исполняемые файлы в каталогах позже в списке. Рассмотрим, например, атаку на систему, где находится текущий рабочий каталог . preceeds /bin в $PATH . Если злоумышленнику удается разместить вредоносный сценарий, совместно использующий имя с общедоступной системной утилитой, например ls , в текущем каталоге (который, как правило, намного проще заменяет исполняемые файлы в корневом каталоге /bin ), пользователь будет непреднамеренно ссылаться на вредоносный сценарий, когда намерение заключается в вызове системы ls . Даже если . добавляется только в конце $PATH , пользователь может быть обманут, чтобы непреднамеренно вызвать исполняемый файл в текущем каталоге, который разделяет имя с общей полезностью, не найденной в этой конкретной системе. Вот почему обычно не иметь относительных компонентов пути как часть $PATH по умолчанию.

    Interesting Posts

    Как я «unbook» pdf

    Реализация Cocoa API для Linux?

    Лечение обратной косой черты оболочек

    Преобразование нескольких групп PNG-файлов в многослойные ICO-файлы

    Как может плохой старый пользователь, не являющийся пользователем root, получить систему отвалов ядра?

    Ubuntu 16.04 bash – можно открыть два интерактивных окна терминала в одном скрипте?

    Univention UCS – Захват AD – по крайней мере один объект групповой политики все еще отсутствует в SYSVOL

    Значок панели Thunderbird для уведомлений по почте

    Защита VPS от доступа к серверной компании

    Не удается найти файл initrd на консоли GRUB

    Samba4 Member server smbclient не работает с NT_STATUS_NO_LOGON_SERVERS

    базовое деление с использованием переменных и целых чисел

    как разместить конкретное приложение при запуске системы в Fedora 15?

    Разделение большого дерева каталогов на куски определенного размера?

    Восстановление по умолчанию наложения в gentoo

    Linux и Unix - лучшая ОС в мире.