A little `man` pages review: `sh` and `busybox`

Abierto
#428 12 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
46/100
Tipo de issue
Documentación
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
markdown

Línea de trabajo

Start by reading the sh and busybox man pages and the guidance in man/README.md, then compare the reported wording, coverage, and launcher notes with the linked Open Group utility and shell language manuals. The notes identify candidate fixes, but many are questions or suggestions rather than settled changes. Done means resolving which observations are accurate and making agreed improvements to the relevant documentation.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I read man sh and man busybox. Below are some notes I wrote as I read, but first a takeaway:

I'm sort of disappointed with the formulations. Not as sharp and crisp as Open Group. I stopped writing down examples of weird formulations. A big suggestion is to feed the LLM the "utilities" (aka. shell) HTML files from Open Group, possibly including the command language manual as well, to inspire its language use and even lift some directly applicable formulations and duplicate topics. And even find missing info, like mention of $PWD missing from man sh's ENV section (what else is missing...). There is also the "Utility Description Defaults" section that the LLM could learn from—maybe even Typographical Conventions—as a safety net under your existing instruction in man/README.md.

Despite my disappointment over clumsy formulations, all in all, a very good resource! I already learned many things!

A last thing to consider is the command language manual (linked above) not being included in the current man set. I don't know if it's even okay to include it verbatim, but a link to it somehow in appropriate man pages, if that's doable, could be an idea. It is an incredible resource.

On to the notes:

EDIT My eyes must have been crossing over. PWD and OLDPWD are mentioned in ENVIRONMENT in man sh, so disregard that.

### sh
Doesn't list `-i` in SYNOPSIS (mentioned in DESCRIPTION, Invocation)
Doesn't list `-l` in SYNOPSIS (mentioned in DESCRIPTION, Invocation)
Almost all options are missing from the synopsis
Learned something new! Under "extensions from bash". Extended string expansions, "command_not_found_handle"
Weird formulations, like:
    - "Shell  options  are  changed with set -o name to turn one on and set +o name to turn it off."
    - "The first word of a simple command, after alias expansion,  names  what runs."
    - "... type shows which of these a name finds"
    - "The search of PATH tries each element in order; an empty element is the current  directory."
Learned something new! `ash` supports CDPATH
Weird formulations, like:
    - "-L (the default) resolves .. in the path by its text, and -P  by the  directories  themselves."
    - "Without -P,  PWD  has  forward  slashes,  an uppercase drive letter, and the capitalization stored on disk."
    - `exec` is described weird
Haha: "End of input is refused the same way, but the 51st in a row leaves."
Learned something new: 'hash' works, and 'read' takes '-t', what 'times' does, BB_UMASK, 'wait -n'
Job name forms are not explained (ex. `%%`)
Weird formulations:
    - "Ctrl-W Delete the blank-delimited word before the cursor.": Why is it formulated different than Alt-D and Alt-Backspace?
    - "The editor never beeps."
A couple of these by now, maybe mention that they're w64devkit specific patches? (EDIT: Coming back here later, maybe say "See NOTES" for these):
    - "The editor never beeps."
    - "A Tab where a command name  would  begin, with  nothing  typed  yet, does nothing, since listing every program in PATH takes seconds on Windows."
    - "HISTSIZE up to 16384"
The OPTIONS paragraph is confusing in context. I kind of forgot that it's talking explicitly about `sh`. It's just not very good writing.
I find the text justification distracting. Maybe it's just me being used to the HTML man pages at Open Group which doesn't justify text.
ENVIRONMENT
    - Learned about BASH_XTRACEFD
    - I don't think CDPATH works
    - I don't think EPOCHREALTIME, EPOCHSECONDS work
    - Learned about "FUNCNAME"
    - "HISTFILESIZE  is not used.": Why not? What did it do?
    - HOME: What does "user's profile directory" technically mean?
    - Learned about LINENO: Nice!
    - MANPATH: Nice that it's mentioned here in `sh`, but should it be?
    - PATH: Maybe say explicitly that Unix/Linux/POSIX uses `:`, but Windows must use `;`
    - "The prompts and the prefix  of  -x  output;": Unclear sentence, missing comma before "and"
    - TERM_PROGRAM: I don't understand this one
    - "-": This is incorrect. It holds the shell options, not the last arg of prev cmd
    - PWD is missing. What else may be missing?
    - Also want to mention that it looks like a future version of busybox-w32 will have [PROMPT_COMMAND](https://github.com/rmyorston/busybox-w32/issues/615)
NOTES
    - "The shell starts from a native Windows environment when...": What does this mean?
    - Learned something new! About CRLF-handling
### busybox
"Every applet except [, echo, false, test, and true prints its usage  on standard  output  and  exits  with  status 0 when its first argument is --help."
    - Is this correct?
"Launchers" section should explain some motivation for the aliases
    - "These applets have no launcher:" Intended, or caught by the LLM?
Applets left out with no replacement:
    - "the [[ form of test." Is this correct??
    - Maybe explain that `bash` was just a rename of `sh` like `ash`/`lash`/`sh`
    - Why is `ascii` missing, btw?
OPTIONS
    - "--install" - "The kit's launchers make this unnecessary for most applets.": Mention to see "LAUNCHERS" section here
ENVIRONMENT:
    "The BB_ variables are specific to busybox-w32.  In  the  shell,  export them: busybox reads them from the environment.": Confusing. Specific to `busybox-w32` as opposed to what? Compounded by calling it just "`busybox`" in the very next sentence.
    Learned something! BB_CRITICAL_ERROR_DIALOGS, BB_FIX_BACKSLASH
    Under BB_OVERRIDE_APPLETS, mention LAUNCHERS section
    HOME: What does it technically mean "user's profile directory"?
NOTES
    "A  path  such  as  c:name...": Mention that this is a `w64devkit` patch?
    "/dev/null for NUL, /dev/tty for the  console":  Why call `NUL` but not `CON`? Maybe mention that anything that's not a `busybox-w32` applet won't understand these
    "or  when  it  is  a Windows program": ?? What does this mean
    "w64devkit changes busybox-w32 as follows:": Ah, here it is. Maybe separate all these into separate points.
Lenguaje dominante
C
Estrellas
5k
Forks
408
Merge medio
4 h 40 min
PR fusionados (30 d)
2

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de skeeto/w64devkit

Todos los issues de skeeto/w64devkit

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.