O passado não funcionou assim.

O passado não funcionou assim.

Emoutro tópicoEu estava dizendo arrogantemente que qualquer programa [que não faz parte da interface de usuário do sistema operacional, como um shell] com nomes como exit, testou helpé estúpido. Eu quis dizer que esses nomes comuns deveriam ser reservados para a interface do usuário de nível superior, geralmente um shell de comando ou utilitário principal do sistema operacional.

O usuário Schily comentou que helpé um comando do sistema de controle de versão sccs que é parte integrante do Unix desde os anos 70. sccs é na verdadeincluído na Especificação Unix Única.

A documentação online do sccs parece ambígua. A maioria das páginas é listada helpcomo um subcomando sccs, invocado como sccs help <topic>. Então há um/usr/bin/sccshelpcomando. Masoutra páginana verdade lista um arquivo /usr/ccs/bin/help.

Presumo que, para o sccs, os usuários /usr/ccs/bin/estariam no caminho, de modo que helpfaz parte de muitas instalações Unix há 40 anos 1 . Nesse caso, eu argumentaria que, embora a escolha do nome do comando seja lamentável, o sccs teria antiguidade e o bash deveria ter chamado seu bash-help integrado ou algo semelhante.

Então é ou era comum ter um comando ( sccs) helpno seu caminho?


1 Isso parece estranho.

Responder1

O passado não funcionou assim.

Você está comprando um modelo moderno um tanto falho que não era o caso na época.

Mas eu sorri e disse: “Não se preocupe, vou treinar você. O primeiro comando que você aprende é HELP”e digita-o no terminal do console. Assim, o gerente do data center, o supervisor de turno e os operadores de oito dias observaram o LA100 emitir o habitual texto introdutório. Quando terminou, eles se viraram para mim com rostos de expectativa e eu disse de maneira avuncular: “Este é o seu comando mais importante!”

O supervisor de turno deu um passo à frente e estudou o texto por cerca de um minuto. Ele então se virou com uma expressão muito confusa no rosto e perguntou: “Para que você usa isso?” Suspirar.

— Mike O'Brien (The Aerospace Corporation) <neat.ai.toronto.edu!pyramid!verdix!ogccse!tektronix!aerospace.aero.org!sequent!aero!obrien> via <[e-mail protegido]> (01/03/1989).VAXen, meus filhos, simplesmente não pertencem a alguns lugares. rec.humor.engraçado.

É notório que o Unix não veio com um comando de ajuda simples para iniciantes. Este foi um buraco (muito discutido em fóruns de discussão on-line) que foi preenchido não apenas uma vez, pelos escritores do shell Bourne Again, mas várias vezes. Mortice-Kern forneceu um helpcomando que procuraria por doco para imprimir de a helpfileusando a helpindex. AT&T System 5 Release 3.2 helptambém tinha um comando, por exemplo:

$ ajuda
help:Ajuda on-line do sistema UNIX

        Descrição das escolhas
                s starter: informações gerais
                l localizar:encontre um comando com palavra-chave
                você uso: informações sobre o comando
                g glossário: definição de termos
                r redireciona para um arquivo ou comando
                q Sair
       Insira a escolha

O fato de isso ter acontecido no AT&T Unix acaba com a ideia de que substituir um comando SCCS nomeado helpé ilegítimo ou que os escritores do shell Bourne Again estavam fora de sintonia. Mas há mais.

Esperava-se que nósrealmente uso PATH.

# PATH define a variável PATH inicial do shell
#
#PATH=/usr/bin:/etc:/bin:/boot/grub:/boot/grup/bin:/boot/solaris/bin:/sbin:\
/usr/openwin/bin:/usr/5bin://usr/X11/bin:/usr/apache/bin:/usr/apache2/bin:\
/usr/appserver/bin:/usr/ccs/bin:/usr/dt/bin:/usr/j2se/bin:usr/local/bin:\
/usr/oasys/bin:/usr/pgadmin3/bin:/usr/proc/bin:/usr/sadm/bin:\
/usr/sadm/admin/bin:/usr/sadm/sysadm/bin:/usr/sbin:/usr/sfw/bin:\
/usr/sfw/i386-sun-solaris2.10/bin:/usr/sfw/sbin:/usr/snadm/bin:\
/usr/sunvts/bin:/usr/ucb:/usr/ucb:/usr/vmsys/bin:/usr/xpg4/bin:\
/usr/xpg6/bin
login.dfl. Sun Microsystems, Inc.. 25/06/2004.

Uma parte do modelo moderno é que tudo vai para um diretório gigante, sejaDaniel J. Bernstein/commandou Arch Linux /usr/bin. É claro que isso causa todas as dores de cabeça com comandos diferentes nomeados fastboot(que em outros modelos seriam diferenciados por estarem in bin/e sbin/). Mas esse não era o modelo então.

O modelo então é exemplificado poras múltiplas variantes do lscomando que discutie por perguntas como "O script bash Nexenta usa /usr/sun/bin/sed em vez de /usr/bin/sed". Há umcarga inteirade diretórios de comando e qual subconjunto deles se escolhe listar no valor da PATHvariável de ambiente e em que ordem determinaa personalidade do sistema operacionalaquele vê.

O caminho de pesquisa do comando pode, e até certo ponto ainda pode, incluir coisas como:

  • /bine /usr/bin/— a normalização formal tradicional e anterior, conjuntos de ferramentas gerais; do ponto de vista da padronização pós-formal, comandos que estejam em conformidade com oDefinição de interface do sistema Ve aGuia de portabilidade X/Openversão 3
  • /sbine /usr/sbin/— ferramentas de administração do sistema
  • /etc/e /usr/etc/- mais ferramentas de administração de sistema (Sim, Virgínia, os executáveis ​​​​já foram incluídos /etc/.)
  • /5bine /usr/5bin/- diretório de compatibilidade System V (ou seja, 5) com ferramentas compatíveis com AT&T Unix System 5
  • /usr/ucb/— Diretório de compatibilidade UCB (ou seja, BSD) com ferramentas compatíveis com BSD
  • /usr/mbin//usr/bin- variantes de ferramentas com capacidade para conjunto de caracteres multibyte
  • /usr/rbin/— ferramentas disponibilizadas por um administrador para alguns shells "restritos"
  • /usr/lbin/— ferramentas instaladas localmente, um precursor de/usr/local/bin/
  • /usr/amdahl/bin/e /usr/sun/bin/— ferramentas de fornecedores de sistemas operacionais, mais geralmente assumindo a forma e a partir das quais um paralelo pode ser traçado/usr/${OEM}/bin/usr/local/bin
  • /usr/games/- jogos
  • /usr/ccs/bin— várias ferramentas de desenvolvedor, como você observou
  • /usr/xpg4/bin/- o diretório com comandos que se comportam da maneira ditada peloGuia de portabilidade X/Openedição 4
  • /usr/xpg6/bin/- o diretório com comandos que se comportam da maneira ditada pelo nocionalGuia de portabilidade X/Openedição 6, mais conhecida como POSIX.1:2001 ouEspecificação Unix únicaversão 3
  • /opt/sfw/bin/— criado através da instalação de um CD de utilitários adicionais da Sun, agora conhecido comoo CD complementar do SunFreeware
  • /opt/csw/bin/-OpenCSWe ferramentas Blastwave
  • /opt/SUNWspro/bin/- comandos do conjunto de ferramentas Sun Workshop (agora conhecido como Oracle Developer Studio), SUNWsendo o código da bolsa de valores (original) da Sun e sprodenotando o antigo nome do produto SunPro
  • /usr/local/bin/— material fornecido por terceiros que não usam um /optsubdiretório ou CSW

Os sistemas operacionais Sun/Oracle e seus derivados de código aberto foram, no seu auge, talvez os exemplos mais extremos de tais sistemas operacionais de personalidade múltipla. (Desde então, a Oracle descartou vários desses diretórios, incluindo /usr/ucbe /usr/ccs, fora.) Mas alguns dos mencionados acima são do AIX e outros. /usr/amdahl/biné da UTS, por exemplo.

O programa executado a partir de um determinado nome de comando dependia da personalidade escolhida. A ideia de que havia, e deveria haver, apenas um programa para qualquer nome de comando era estúpida. Afinal, diferenciar comandos com os mesmos nomes era o PATHquepara.

Não havia noção de precedência estrita.

Muitos comandos viveram e morreram rapidamente. Bill Joy criou um iulcomando como precursor do ul, por exemplo. O BSD também já teve um greekcomando.

A ideia de que um comando era gravado em pedra para sempre e possuía um nome com exceção dos shell builtins e outros, era bastante estranha, dada a rotatividade nos conjuntos de comandos.

Só para começar,sh em siforam os projéteis Thompson, Mashey, Bourne e Korn no espaço de uma década e pouco. A ideia de que o comando externo do shell Thompson ifimpedia que o shell Bourne fosse usado ifcomo palavra-chave era obviamente ridícula.

Observe que o mecanismo do shell AT&T Korn (pós-2005, ksh93q) para habilitar comandos internos extras, a inclusão de /opt/ast/binno valor de PATH, ambos suportam a noção de que comandos internos podem suplantar comandos externos com os mesmos nomeseestá de acordo com a ideia que se espera que alguém use PATHpara controlar a personalidade. ( asta propósito, significa AT&T Software Technology.)

Leitura adicional

  • Companhia Americana de Telefonia e Telégrafo. "Noções básicas para usuários do sistema UNIX: o helpcomando".Unix System V, versão 3.2: guia do usuário. Prentice-Hall. 1989. pp. 2–23 e seguintes.
  • David Fiedler, Bruce H. Hunter, Stephen G. Kochan e Patrick H. Wood (1986). " /usr- O Diretório Misterioso".Administração do sistema UNIX. Hayden Book Company, ISBN 9780810462892. pp.
  • XPG.Padrões, ambientes e macros. Páginas do manual do Oracle Solaris. Oráculo. 2014.
  • XPG4.Padrões, ambientes e macros. Páginas de manual do SunOS. Oráculo. 2004.
  • Michael R. Ault (1996). Companheiro do administrador do sistema UNIX. Wiley. ISBN 9780471111443.
  • if.Manuais. Projeto Etsh.
  • Estranheza no script de shell ksh93 ("command -p mkdir t" falha)
  • https://news.ycombinator.com/item?id=7278408
  • Jonathan de Boyne Pollard (2017).Uma página de manual aprimorada paraul. Propostas.

Responder2

Havia um /usr/bin/helpno PWB/UNIX e no Sistema III que fornecia ajuda para o SCCS, principalmente para mensagens de erro do SCCS, embora fosseextensívele sites individuais podem adicionar ajuda para outros comandos ou mensagens de erro.

ajuda(1)do Sistema III:

.SH NAME
help \- ask for help
.SH SYNOPSIS
.B help
[\^args\^]
.SH DESCRIPTION
.I Help\^
finds information to explain a message from a command or explain the use of
a command.
Zero or more arguments may be supplied.
If no arguments are given,
.I help\^
will prompt for one.
.PP
The arguments may be either
message numbers (which normally appear in parentheses following messages)
or command names,
of one of the following types:
.PP
.RE 
.RS 10
.TP 10
type 1
Begins with non-numerics, ends in numerics.
The non-numeric prefix is usually an abbreviation for the program or
set of routines which produced the message
(e.g., \fBge6\fP, for message 6 from the
.I get\^
command).
...
.SH FILES
.PP
.TP 20
/usr/lib/help
directory containing files of message text.

e terminando com o deliciosamente autorreferencial

.SH DIAGNOSTICS
Use
.IR help (1)
for explanations.

/usr/src/cmd/sccs/sccs.mkteve o seguinte:

INSDIR = /usr/bin
#   Directory where executable SCCS commands are stored

help:   help.o $(LIBDIR)/comobj.a
    $(CC) $(LDFLAGS) -o help help.o $(LIBDIR)/comobj.a $(LIBES)
    cp $(TESTDIR)/help $(INSDIR)


HELPDIR = help.d
#   Directory containing SCCS help files.
PUB_HELPLIB = /usr/lib/help
#   Public directory where help files are stored.

helpfiles:
    -mkdir $(PUB_HELPLIB)
    cp $(HELPDIR)/ad $(PUB_HELPLIB)/ad
    cp $(HELPDIR)/bd $(PUB_HELPLIB)/bd
    ...

Responder3

O SCCS já foi escrito em 1972 (fazendo com que o SCCS complete 46 anos hoje), mas é difícil obter informações para o SCCS antes da versão 4.0, que foi publicada em 18 de fevereiro de 1977. A versão 4.0 do SCCS definitivamente incluía o helpcomando. As revisões mais antigas do SCCS usavam um formato de arquivo de histórico binário que não é compatível com o SCCS atual.

Deixe-me dar algumas informações bashantes de escrever mais sobre o SCCS:

bashé um shell hostil ao usuário, pois implementa muitos recursos internos idiotas em vez de implementar o ksh93método para componentes internos que não estão listados no padrão. ksh93implementa um builtin nomeado builtinque permite configurar umcaminho de pesquisapara embutidos. O principal problema com esses built-ins idiotas é que eles são encontrados com preferência máxima e não podem ser desativados facilmente. Os componentes estendidos do ksh93, entretanto, geralmente não são encontrados por padrão, pois exigem que o usuário configure um PATHque inclua/usr/ast/bin.

Voltar SCCSao comportamento do UNIX:

Qualquer desenvolvedor no UNIX normalmente tem/usr/ccs/binem seu PATHcomoCCSsignifica algo semelhante aSistema de compilação C. Este diretório contém programas comocc, as, size, strip, nm, m4, make, SCCS, yacc...

/usr/bin/sccshelpfoi introduzido pela Oracle enquanto tentava tornar o Solaris semelhante ao Linux e muitas pessoas do UNIX não gostam dessa mudança.

Se você gosta de verificar a documentação online oficial do SCCS, recomendo que você verifique:

http://sccs.sourceforge.net/

em especial:http://sccs.sourceforge.net/man/index.html

ele passou por uma grande reescrita durante os últimos 12 anos e, aliás: sou o mantenedor desde então.

Embora o subsistema SCCS original tenha sido escrito por Marc J. Rochkind da AT&T, Eric Allman da BSD escreveu ocomando sccsem 1980 e simplificou o uso do SCCS.

Então, se você mora no mundo da AT&T, todos os comandos estão em/usr/ccs/binenquanto no universo BSD, você chamasccs <subcommand>

Respondendo sua pergunta:sim, era/é comum que os desenvolvedores tenham o comando sccs help no PATHmesmo que o comando frontend do SCCS sccsesteja normalmente em/usr/bin

informação relacionada