Почему есть две или более разных версий man-страницы в http://manpages.ubuntu.com
Например, если посмотреть на man-страницу at
, вы можете найти два, один из которых предоставляется пакетом manpages-posix
[ref] sup>. И еще один, который предоставляется самим пакетом at
[ref] sup>.
То же самое относится и к другим пакетам, таким как ls.1 и ls.1posix и ls.1plan9 .
Из быстрого поиска я понял, что posix означает, что это стандарт, определенный IEEE для поддержания совместимости между различными ОС [ref] sup>.
Так есть ли в Ubuntu собственная реализация программы?
POSIX предусматривает, что много команд доступны (см. объем Shell & Utilities), и что они работают определенным способом. Вот те команды:
admin
alias
ar
asa
at
awk
basename
batch
bc
bg
break
c99
cal
cat
cd
cflow
chgrp
chmod
chown
cksum
cmp
colon
comm
command
compress
continue
cp
crontab
csplit
ctags
cut
cxref
date
dd
delta
df
diff
dirname
dot
du
echo
ed
env
eval
ex
exec
exit
expand
export
expr
false
fc
fg
file
find
fold
fort77
fuser
gencat
get
getconf
getopts
grep
hash
head
iconv
id
ipcrm
ipcs
jobs
join
kill
lex
link
ln
locale
localedef
logger
logname
lp
ls
m4
mailx
make
man
mesg
mkdir
mkfifo
more
mv
newgrp
nice
nl
nm
nohup
od
paste
patch
pathchk
pax
pr
printf
prs
ps
pwd
qalter
qdel
qhold
qmove
qmsg
qrerun
qrls
qselect
qsig
qstat
qsub
read
readonly
renice
return
rm
rmdel
rmdir
sact
sccs
sed
set
sh
shift
sleep
sort
split
strings
strip
stty
tabs
tail
talk
tee
test
time
times
touch
tput
tr
trap
true
tsort
tty
type
ulimit
umask
unalias
uname
uncompress
unexpand
unget
uniq
unlink
unset
uucp
uudecode
uuencode
uustat
uux
val
vi
wait
wc
what
who
write
xargs
yacc
zcat
GNU coreutils (что поставка GNU/дистрибутивов Linux) содержит все эти команды, но они разрабатывали далеко от стандартной основы POSIX со временем. Некоторое предложение лучшие функции. Некоторая работа немного отличающимися способами. Эти coretils версии что стандарт man
страницы обслуживают.
Но все еще желательно записать сценарии, которые работают над многими платформами. Например, если Вы пытались использовать расширенную coreutil функциональность grep
на OSX Вы столкнулись с синтаксическими ошибками. И это - то, почему знание, как версия POSIX работает, желательно. Установка manpages-posix
и Вы знаете все.
Также важно знать этот материал, если Вы - планирование улучшения GNU coreutils.
Plan9 отличается все снова и снова. Это никогда не разрабатывалось, чтобы быть совместимым POSIX. Это борется за сумму совместимости POSIX через слой эмуляции, и страницы справочника для него снова, там как документация для сообщения то, что можно использовать.
Помимо того, что сказал Оли о написании переносимых скриптов (и взлом на coreutils ), существуют две другие ситуации, когда руководство по POSIX страницы могут пригодиться:
Если вы установите переменную среды POSIXLY_CORRECT
(на что угодно, она может даже быть пустой), многие утилиты GNU и некоторые другие программы будут вести себя так, как указано в POSIX, даже если разработчики не видели причин, по которым пользователи, скорее всего, захотят это поведение.
Это не заставляет вашу систему вести себя как настоящая POSIX-совместимая ОС. Ядро Linux, GNU libc и многие пользовательские инструменты специально разработаны для обеспечения совместимости с POSIX , только если это более полезно, чем вредно . Это одна из причин, по которой системы GNU / Linux, такие как Ubuntu, не считаются системами Unix.
На поведение ls
большое влияние оказывает , но не зависит от того, установлен ли POSIXLY_CORRECT
. (Вы можете убедиться в этом, проверив исходный код, скажем, в 13.04: ls-ls.c
, ls.h
и ls.c
) не ссылаются на эта переменная среды.)
Но некоторые другие утилиты затронуты. Например, утилита df
печатает информацию об использовании диска для всех подключенных устройств. Обычно Ubuntu df
(разработчик GNU coreutils) показывает это в блоках по 1 килобайт. Если установлено значение POSIXLY_CORRECT
, оно отображается в 512 блоках (то есть в полкилобайтах). Такое поведение требуется стандартом POSIX, но , вероятно, бесполезно для большинства пользователей , поэтому оно не используется по умолчанию.
ek@Kip:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda8 15481840 11816640 2878768 81% /
udev 1020748 12 1020736 1% /dev
tmpfs 412840 5156 407684 2% /run
none 5120 0 5120 0% /run/lock
none 1032100 240 1031860 1% /run/shm
none 102400 32 102368 1% /run/user
/dev/sda6 245679 159043 73529 69% /boot
/dev/sda9 31458256 10024972 19835284 34% /home
/dev/sdd1 1922859824 1687175656 138008496 93% /media/ek/Noether
/dev/sdc1 1922859824 1700447368 124736784 94% /media/ek/Baker
/dev/sdb1 1922859824 1782944724 42239428 98% /media/ek/Spinoza
ek@Kip:~$ POSIXLY_CORRECT= df
Filesystem 512B-blocks Used Available Use% Mounted on
/dev/sda8 30963680 23573440 5817376 81% /
udev 2041496 24 2041472 1% /dev
tmpfs 825680 10312 815368 2% /run
none 10240 0 10240 0% /run/lock
none 2064200 480 2063720 1% /run/shm
none 204800 64 204736 1% /run/user
/dev/sda6 491358 318086 147058 69% /boot
/dev/sda9 62916512 20049944 39670568 34% /home
/dev/sdd1 3845719648 3374351312 276016992 93% /media/ek/Noether
/dev/sdc1 3845719648 3400894736 249473568 94% /media/ek/Baker
/dev/sdb1 3845719648 3565889448 84478856 98% /media/ek/Spinoza
Иногда доступна только справочная страница POSIX. Например, команда cd
- это только оболочка , встроенная в . Он предоставляется разными оболочками и ведет себя немного по-разному от оболочки к оболочке (при этом разные оболочки иногда заставляют cd
принимать разные опции командной строки ).
Интерактивная оболочка по умолчанию в Ubuntu - bash
, и вы можете получить информацию о cd
в man bash
. Но если вам нужна страница справочника только для cd
, ну, нет исполняемого файла cd
(нет единой, пригодной для использования в глобальном масштабе, независимой от оболочки команды cd
).
Но команда cd
является обязательной частью стандарта POSIX - оболочки должны ее реализовывать, и стандарт POSIX «знает» о том, что ей требуется. Таким образом, возможна man-страница POSIX для cd
, и она существует.
Поиск по cd
на manpages.ubuntu.com показывает страницу руководства POSIX и еще две . Кстати, это еще один пример нескольких страниц руководства с одним и тем же именем. Какие другие? Одной из является команда cd
на языке Tcl . Другой - это драйвер CD-ROM в операционной системе FreeBSD. Страницы руководств по FreeBSD иногда полезны для пользователей Ubuntu, поэтому можно установить целую их коллекцию, включая man 4 cd
(не одна из страниц справочника FreeBSD, скорее всего, будет полезна для пользователей Ubuntu, не использующих также FreeBSD). [тысяча сто шестьдесят шесть]
Вы можете удивиться, почему в Ubuntu вообще есть страницы руководства по Плану 9 . В конце концов, в отличие от Ubuntu (и многих других ОС, таких как FreeBSD), Plan 9 даже не является операционной системой в стиле Unix - , хотя, как говорит Оли, есть некоторые сходства.
Причина этого заключается в том, что пользовательские инструменты Plan 9 (базовый набор инструментов, очень приблизительно соответствующий coreutils) были портированы на Unix-подобные системы, поэтому их можно запускать в таких ОС, как Ubuntu. Они и их справочные страницы предоставляются пакетом 9base
.
Некоторые (не все) инструменты Plan 9, доступные для Ubuntu, имеют то же имя, что и инструменты Ubuntu, и выполняют те же или похожие функции.
Одна из причин наличия инструментов Plan 9 в Ubuntu заключается в том, что некоторые из них не соответствуют напрямую ни одному из инструментов Ubuntu (но могут все еще нуждаться в инструментах, которые это делают, для совместимости).
Другая причина - поддержка программного обеспечения, которое зависит от инструментов Plan 9. Например, менеджер окон wmii раньше был упакован для Ubuntu (и доступен в официальных источниках программного обеспечения Ubuntu); этот пакет wmii2
зависел от 9base
.