POSIX гарантирует, что стандартные утилиты находятся в ПУТИ?

Если у Вас нет разрешения изменить Вашу оболочку входа в систему, можно сказать удар (я предполагаю, что удар является оболочкой входа в систему) заменять себя zsh. В Вашем ~/.bash_login, добавьте эту строку:

exec /bin/zsh --login
11
24.05.2012, 02:18
2 ответа

Да и нет. В среде POSIX утилиты должны вести себя, как описано спецификацией. На практике это означает, что приспосабливание версиям утилит должно присутствовать в $PATH. Однако при запущении программы в совместимой POSIX системе, можно выполнять его в несоответствующей среде. На практике, что часто происходит, то, что ОС имеет режим прежней версии и режим POSIX, и находится в режиме прежней версии по умолчанию. Хуже, чем пропавшие без вести некоторых команд, режим прежней версии имеет тенденцию иметь несовместимости в них, такие как опции с различными значениями.

Можно получить пользу PATH с getconf. Конечно, это хитро, как getconf в оригинале $PATH может не быть правильный. Использование приложений для команды показывает способ сделать это:

command -p getconf PATH

Насколько я понимаю спецификацию, это не необходимо, если Вы запускаете свою программу в приспосабливающей POSIX среде; и если Вы не запускаете свою программу в приспосабливающей POSIX среде, POSIX не применяется. Однако это использование приложений может быть взято в качестве рекомендации: если это не работает, можно чувствовать себя наделенными правом жаловаться поставщику, что независимо от того, что они делают относительно буквы спецификации POSIX, они не выполняют ее дух.

13
27.01.2020, 19:58
  • 1
    Heh, я даже не заметил это getconf PATH в разделе использования приложений.Спасибо! –  Richard Hansen 24.05.2012, 06:42

Да и нет. В среде POSIX утилиты должны вести себя, как описано спецификацией. На практике это означает, что приспосабливание версиям утилит должно присутствовать в $PATH. Однако при запущении программы в совместимой POSIX системе, можно выполнять его в несоответствующей среде. На практике, что часто происходит, то, что ОС имеет режим прежней версии и режим POSIX, и находится в режиме прежней версии по умолчанию. Хуже, чем пропавшие без вести некоторых команд, режим прежней версии имеет тенденцию иметь несовместимости в них, такие как опции с различными значениями.

Можно получить пользу PATH с getconf. Конечно, это хитро, как getconf в оригинале $PATH может не быть правильный. Использование приложений для команды показывает способ сделать это:

command -p getconf PATH

Насколько я понимаю спецификацию, это не необходимо, если Вы запускаете свою программу в приспосабливающей POSIX среде; и если Вы не запускаете свою программу в приспосабливающей POSIX среде, POSIX не применяется. Однако это использование приложений может быть взято в качестве рекомендации: если это не работает, можно чувствовать себя наделенными правом жаловаться поставщику, что независимо от того, что они делают относительно буквы спецификации POSIX, они не выполняют ее дух.

13
27.01.2020, 19:58

Теги

Похожие вопросы