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

Моя путаница

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

  • В чем разница между pkill и killall?
  • Как писать на ext2-образ без доступа root
  • Madwifi VAP (и wlanconfig) современный эквивалент
  • Использование initrd / initramfs в качестве корневой файловой системы
  • Операционная система хостинга неизвестна на сайте www.netcraft.com
  • Как процессы конечного пользователя, среда рабочего стола и менеджер окон взаимодействуют друг с другом?
  • Может ли кто-нибудь объяснить, в чем разница между командами?

  • Почему iptables не получает маркированный пакет?
  • Предотвращение автоматического подключения определенного USB-устройства
  • Как понять контекст безопасности в «ls -Z»?
  • Эффекты монтажа / (корень файловой системы) с опцией nodev
  • Является ли много консолей в файле securetty риска?
  • Выходы lsmod: не испорченные
  • 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 по умолчанию.

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