Нет, нет абсолютно никакой причины, почему необходимо создать X (или большинство программ) в той же операционной системе, что Вы будете работать на ней. Это часто более трудно, иногда даже невозможно, для создания программного обеспечения для другой архитектуры процессора (amd64/arm/ppc/x86 / …). Создание для другой операционной системы легче, и точная версия ядра абсолютно не важна (если Вы не создаете модули ядра).
(Затем Вы могли бы задаться вопросом, почему информация включена, … интересно также. Я подозреваю, что это - окольный способ предоставить информацию о том, какая версия компилятора и пакеты разработки использовались для создания путем указания на вероятное распределение и признак версии.)
Нет, если /bin/sh
символьная ссылка состоит в том, чтобы колотить удар, переходит просто posix к режиму - от удара человека:
При вызове как sh удар переходит к posix режиму после того, как файлы запуска читаются.
Если Вы теперь будете искать posix режим в странице справочника удара, то Вы будете видеть что некоторая оболочка builtins как time
или source
ведите себя по-другому. Это - все. bashishms как запись function
прежде, чем объявить функцию или использовать source
вместо .
все еще будет работать, но команды могут вести себя по-другому.
Итак, если /bin/sh
символьная ссылка на /bin/bash
все еще работают все типичные bashishms.
Поскольку довольно обширный список различий в режиме Posix взглянул на справочник удара.
Кажется, существует некоторый беспорядок вокруг Оболочки Bourne. Оболочка Bourne была оболочкой Unix несколько десятилетий назад в дни предPOSIX. В наше время "sh" является реализацией или другой из оболочки, которая реализует спецификацию POSIX, среди которой у нас есть удар, pdksh, AT&T ksh, более новые оболочки Almquist и их производные, которые были сделаны совместимым POSIX (включая "sh" некоторого BSDs, другой BSDs sh бывший основанный pdksh и пепел Debian (тире)). Даже zsh имеет режим, в котором это - главным образом совместимый POSIX.
Оболочка Bourne не является совместимым POSIX, и не может быть найдена на многих систему в наше время. Где Оболочка Bourne найдена или где это не, всегда будет "sh", который является совместимым POSIX (и не будет Оболочка Bourne), обычно в /bin
в то время как известным (раздражающим) исключением является Солярис.
Обратите внимание, что перед Оболочкой Bourne, и который мы обсуждаем 30 лет назад, "sh" был оболочкой Thompson. Мы не пишем сценарии, совместимые с оболочкой Thompson больше. Точно так же мы должны прекратить думать о "sh" как об Оболочке Bourne.
Теперь "sh" является спецификацией, не многими когда-то несовместимые варианты реализации. Это делает намного легче записать портативные сценарии. Просто следуйте за спецификацией.
Это идет для "sh" и всех стандартных утилит (sed, сокращение, TR...)
sed -r
. В системах с основанными на BSD утилитами Вы используете sed -E
. sed FreeBSD принимает обоих, но единственный Mac OS X принимает -E
. И так далее и так далее. положительная сторона
– dubiousjim
23.09.2012, 23:08
\(...\)\1
не имеет никакого перевода в стандартном EREs).
– Stéphane Chazelas
24.09.2012, 09:12
\|
для BREs. Я - все для записи максимально портативно. Я только делал (я думал широко ценивший), наблюдение, что это может быть болезненно, и иногда пишущий в POSIX просто не возможно. Где-нибудь имейте ссылки, которые показывают много таких извращений; будет искать их.
– dubiousjim
24.09.2012, 09:50
${VAR:=stuff...here}
но много оболочек не позволяют Вам, необходимо поместить кавычки вокруг stuff...here
.
– dubiousjim
24.09.2012, 10:20
/bin/sh
как хижина. Сценарий оболочки все еще может явно использовать/bin/bash
. Так или иначе большинство сценариев оболочки, вероятно, будет хорошо работать под/bin/sh, но проблемой будут пользовательские инструменты, например, большая часть сценария оболочки ожидает пространство пользователя GNU, которое, вероятно, будет большим количеством проблемы, чем просто некоторая синтаксическая ошибка. Я также добавил ссылку к ссылке удара, которая перечисляет другое поведение в posix режиме – Ulrich Dangel 06.08.2012, 05:43