Когда использовать XPG* версия команды?

Нет никаких дистрибутивов без сервисного выполнения, поскольку некоторые необходимы, чтобы система работала. Если Вы хотите отключить некоторых, можно сделать это сами. Некоторыми дистрибутивами, которые отвечали бы всем требованиям, является Дуга, Слабая или хинду. Можно установить минимальные версии настольных дистрибутивов (*buntu, Fedora...), но это, вероятно, было бы большим количеством работы.

6
28.04.2015, 18:03
3 ответа

Некоторые коммерческие Unix-системы имеют обратно совместимые утилиты в /bin и /usr/bin, а также каталог типа /usr/xpg4/bin, который содержит утилиты, совместимые с POSIX-интерфейсом. Таким образом, старые приложения могут придерживаться старого PATH только с помощью /bin и /usr/bin, а новые приложения сначала используют PATH с утилитами POSIX. Если вам не нужна обратная совместимость с утилитами 1980-х годов из этой Unix-системы, то лучше использовать утилиты POSIX.

В моем .профиле , я поставил следующие каталоги впереди /bin и /usr/bin, если они существуют:

/bin/posix
/usr/bin/posix
/usr/xpg6/bin
/usr/xpg4/bin
/usr/xpg2/bin

Я думаю, что они охватывают, по крайней мере, Solaris, Tru64 (также известный как Digital Unix, или OSF/1) и HP-UX.

Вместо того, чтобы автоматически определять PATH, вы должны найти подходящий PATH для POSIX-ориентированных приложений, вызвав утилиту getconf :

PATH=$(getconf PATH)

Некоторые системы, такие как *BSD и Linux, поставляют только POSIX-совместимые утилиты, поэтому они находятся в обычных каталогах (/bin, /usr/bin) и нет необходимости в каком-либо отдельном каталоге.

3
27.01.2020, 20:29

В зависимости от используемой оболочки у вас может быть параметр, который вы можете проверить; Как oStype , набивающая ОС удельных вещей там.

if [[ $OSTYPE == solaris* ]]; then
  here be dragons
fi

Или если у вас есть несколько разных OSS

case $OSTYPE in
  freebsd*|solaris*)
    export MANWIDTH=tty
  ;;
  openbsd*)
    export "PKG_PATH=http://mirror.team-cymru.org/pub/OpenBSD/$(uname -r)/packages/$(uname -p)"
  ;;
esac
0
27.01.2020, 20:29

Это легко динамически построить последовательность и оценить его:

eval "$(echo -n 'pr -mt '; while read ext; do echo "<(ls -1 *.$ext)"; done < list  |tr '\n' ' ' )"

где list будет файл (возможно, fifo), представляющий список расширений, из которых вы хотите построить команду.

< () по существу создает неназванные FIFO. Альтернативой без оценки может быть использование именованных файлов:

while read ext; do mkfifo ${ext}.pipe; ls -1 *.$ext > ${ext}.pipe & done
pr -mt *.pipe
rm *.pipe  #remove the named pipes when done

Выше предполагается, что в каталоге отсутствуют другие имена файлов, оканчивающиеся на «.pipe».

-121--139523-

Вероятно, полученное сообщение об ошибке указывает на то, что ни один файл не соответствует имени образца .swp $ . Как правило, более безопасный способ сделать то, что вы написали (потому что он будет обрабатывать любое имя файла):

find . -name '*.swp' -print0 | xargs -0 rm -i --

В фрагменте выше я использовал -print0 , чтобы найти отделяет записи с нулевыми символами; значение по умолчанию - newlines, что к сожалению, он допустим в пределах имени файла. Команда -print0 работает с любыми именами файлов, включая те, которые встраивают новые строки. Аналогично, xargs -0 обрабатывает свои входные данные как разделенные нулями записей.

-121--117356-

Во-первых, не используйте версию псевдонима , изображенную в вашем вопросе; это, безусловно, худший вариант, который у вас есть. Также не добавлять этот путь XPG4 жестко закодированный для всех платформ.

Если в Solaris в PATH перед другими системными каталогами bin определены /usr/xpg4/bin , то это, как правило, намного лучше. Смею сказать, что XPG4 стандартная версия инструментов, как правило, лучший выбор на этой платформе. (Еще одним ярким примером является «сломанный awk » в Solaris.) Конечно, я бы предложил определить этот XPG4 PATH только для платформ Solaris; чтобы можно было опросить платформу и условно установить ее в своем профиле.

Я бы, вероятно, протестировал выход uname , но я также не вижу проблем с тестированием существования каталога /usr/xpg4/bin , как вы.

1
27.01.2020, 20:29

Теги

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