-2

В linux очень часто при установке какого-либо приложения создается символическая ссылка на его исполняемые файлы в /usr/bin поэтому они будут в системной переменной PATH .

С другой стороны, в Windows большинство приложений объединяют свой собственный путь установки с переменной среды PATH во время установки, что приводит к нескольким проблемам, которые не входят в сферу действия этого вопроса.

Я вижу, что папка C:\Windows\System32 играет несколько схожую роль с /usr/bin , так как обе являются частью стандартной PATH в обеих системах, так почему не принято распространять символические ссылки на исполняемые файлы C:\Windows\System32?

2 ответа2

3

Потому что переменная окружения PATH предшествует символической ссылке на два десятилетия. Эквивалент символических ссылок, как вы видите в Linux, был представлен в 2006 году в Windows Vista. Переменная PATH существует с 1986 года.

Чтобы отказаться от 20-летнего подхода к новому, разработчикам нужна чертовски веская причина, которая перевешивает недостатки создания символических ссылок в System32:

  • Для этого нужны административные привилегии.
  • Для каждого файла .exe должна быть создана одна символическая ссылка.
  • Установщики и деинсталляторы должны создавать и уничтожать их. Если разработчик когда-либо изменит имя своего файла .exe, он должен написать процедуру для проверки старых символических ссылок и обновления их.
  • Принимая во внимание все вышесказанное, если у двух приложений будут файлы с одинаковыми именами .exe, у нас будет "Ад символической ссылки" в дополнение к "Аду DLL". Разве одного ада уже недостаточно?
  • Результат всегда для каждого компьютера (не для пользователя или процесса).

В то же время:

  • В любом случае, не многие приложения используют переменную PATH . Большинство приложений представляют собой приложения с графическим интерфейсом, которые устанавливают свои ярлыки в меню «Пуск» и являются основным способом их выполнения.
  • Переменная PATH может быть настроена для каждого компьютера, пользователя и даже процесса. Фактически, некоторые приложения, такие как Visual Studio, имеют настраиваемые командные строки с настраиваемой переменной PATH для каждого процесса только для этого экземпляра.
0

Вопрос довольно широкий, и я не уверен, что он выживет, но очевидный ответ заключается в том, что System32 совсем не похож на /usr/bin . Вы сказали, что они играют похожую роль, но это не делает это правдой. Тот факт, что они оба являются частью системного пути, не означает, что они играют сходные роли.

Во всяком случае, System32 больше похож на /sbin который также является частью системного пути по умолчанию в Linux. Сравнение далеко не идеально, поскольку это очень разные операционные системы.

Является ли общепринятой практикой помещать символические ссылки на обычные пользовательские программы в /sbin?

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