El shell PWB (también conocido como shell Mashey ) era un shell de Unix . [1]
El shell PWB era una versión modificada (y generalmente limitada a la compatibilidad con versiones anteriores) del shell Thompson con características adicionales para aumentar la facilidad de uso para la programación. Fue mantenido por John Mashey y varios otros (Dick Haight, Alan Glasser). [1] [2] [3]
PWB/UNIX comenzó con Research Unix 4th Edition a mediados de octubre de 1973, y se actualizó con frecuencia durante los siguientes años, ya que el departamento de PWB siguió los cambios de Research Unix y agregó algunas características. El shell PWB se lanzó a mediados de 1975 [4] y permaneció disponible hasta la versión 6 de PWB/UNIX basada en Unix . [5] En la versión 7 de Unix (1979), el shell PWB fue reemplazado por el shell Bourne . [6] El shell PWB fue el shell estándar para PWB/UNIX , alrededor de 1975-78, [1] pero no se ejecutó en ninguna edición de Research Unix , ya que requería una nueva llamada al sistema que permitiera establecer el nombre de inicio de sesión, el directorio de inicio de sesión ( $s ) y TTY ( $t ) para obtenerlos.
Se introdujeron varias características en el shell PWB que permanecen en muchos shells posteriores. Los comandos if y goto se hicieron internos al shell y se ampliaron para permitir if - then - else - endif , y se introdujeron las construcciones switch y while , así como onintr para ignorar interrupciones o capturarlas para realizar una limpieza. [1] Se podían usar variables simples, aunque sus nombres se limitaban a una letra y algunas letras se reservaban para propósitos especiales, de los cuales algunos son los precursores de las variables de entorno que se encuentran en todos los sistemas Unix desde la versión 7 en adelante.
Por ejemplo, la variable $s es la antecesora de $HOME , utilizada para evitar la codificación rígida de los nombres de ruta. La variable $p es la antecesora de $PATH , que permitía a los usuarios buscar comandos en los directorios que eligieran. A diferencia de la mayoría de los sistemas UNIX de la época, el centro informático PWB/UNIX original era compartido por varios grupos de programación que no podían cambiar el contenido de /bin o /usr/bin, pero querían crear sus propios conjuntos de comandos compartidos. Además, la búsqueda de comandos del shell se mejoró para permitir que los procedimientos del shell se invocaran como comandos binarios, es decir, si el shell encontraba un archivo no binario marcado como ejecutable, bifurcaría otra instancia del shell para leer ese archivo como un script de shell. De este modo, las personas podían escribir en lugar de . Todo este comportamiento se empaquetó como la función pexec , que es el antecesor de execvp , para permitir que cualquier programa invocara comandos de la misma forma que el shell.command argumentssh pathname/command arguments
El carácter $ , utilizado anteriormente para identificar argumentos en un script de shell , se convirtió en el marcador para desreferenciar una variable y podía utilizarse para insertar el valor de una variable en una cadena entre comillas dobles . (Además de en los shells posteriores, esta característica también aparecería más tarde en los lenguajes de programación Perl y PHP ).
Estas características no pudieron superar las deficiencias del shell Thompson, por lo que Stephen Bourne escribió un nuevo shell desde cero . Este shell Bourne era incompatible con los shells Thompson y PWB, pero incluía equivalentes de la mayoría de las características del shell PWB, pero hechas desde cero, en lugar de hacerlo de forma incremental, con mucha discusión entre los diversos participantes. En particular, Stephen Bourne, John Mashey y Dennis Ritchie diseñaron las variables de entorno y la maquinaria relacionada como un mecanismo general para reemplazar las características anteriores, más limitadas. Después de la adopción del shell Bourne como el shell estándar en la versión 7 de Unix , el uso del shell PWB se eliminó gradualmente, aunque durante un tiempo, hubo un curso interno de Bell Labs llamado Programación Bourne Shell para programadores de Mashey Shell . El shell C , desarrollado antes del lanzamiento público del shell Bourne, también heredó algunas de las características del shell PWB. [ cita requerida ]
Además de estas variables [$n, $p, $r, $s y $t], se proporciona lo siguiente: $$ contiene un número de 5 dígitos que es el número de proceso único del shell actual. En algunas circunstancias, es necesario saber el número de un proceso, para matarlo, por ejemplo. Sin embargo, su uso más común hasta la fecha ha sido el de generar nombres únicos para archivos temporales.
shell Thompson original, el shell Mashey y el shell Bourne se llamaban sh, y se superpusieron o reemplazaron entre sí en los años 1970-1976 a medida que se refinaban y adquirían capacidades adicionales. ... El shell Thompson no tenía capacidades de programación. Esto cambió con el desarrollo del shell Mashey (y más tarde el shell Bourne).
"PWB Shell" apareció por primera vez a mediados de 1975. Derivó de un conjunto de requisitos y sugerencias que hice a principios de 1975 al intentar hacer una programación seria de shell. A mediados de 1975, el shell adquirió variables, incluidas 3 que se derivaron de datos por proceso. Aquí es donde entró en juego la idea de una búsqueda de rutas más generalizada.