Conocimientos básicos --- comprender el shell y varios sh y actualizar bash a un bash5.0 de alto nivel

                                  Conocimientos básicos --- comprender el shell y varios sh y actualizar bash a un bash5.0 de alto nivel

Uno, ¿qué es un caparazón? ¿Qué es bash?

Es el kernel que administra el hardware de la computadora. El usuario se comunica con el kernel a través del shell. En esencia, el shell es un macroprocesador que puede ejecutar varios comandos. Y bash (/ bin / bash) es el shell predeterminado de Linux. De hecho, en términos humanos, un shell es un shell, un puente y un camino fuera del kernel. Es esencialmente una pieza de software, pero este software hace algo inusual. Acepta comandos de usuario y luego interpreta y ejecuta los comandos. invocando así el kernel del sistema. Todo tipo de recursos, incluidos todo tipo de recursos de hardware, como cpu, memoria, gestión de memoria, etc. Por supuesto, otro significado del shell es un lenguaje, ya que es un lenguaje, entonces hay algunas especificaciones. Programas como / usr / bin / bash son intérpretes que implementan el lenguaje shell.

Creo que después de leer el contenido anterior, muchos estudiantes pueden estar aún más confundidos, no importa, este mundo es tan cruel. La razón principal es que la definición de shell es muy amplia, pero hay dos palabras clave, intérprete de comandos (¿como un compilador?), Lenguaje, recordar estas dos palabras clave es fácil de entender.

La definición amplia y específica de shell, siempre que sea una interfaz entre humanos y computadoras, se puede llamar Shell. Línea de comando: bash, sh, csh, ksh, ceniza, zsh, gráfica: KDE, GNOME, CDE, XFCE Después de que su "Shell" se reconoce, que se traduce en una instrucción para llamar al programa. Después de que la ejecución sea exitosa, el resultado se puede traducir a voz y luego se le puede devolver. Por ejemplo, debes estar familiarizado con "Little Ai", algo como "Hola Siri" también se puede llamar shell. La situación de Windows es un poco más complicada: el núcleo de la serie Windows 9X es DOS, el shell gráfico se llama Explorador de Windows y el shell de línea de comandos se llama comando. A partir de Windows XP, el kernel de Windows se llama Windows NT (Windows New Technology), el shell gráfico se llama Explorador de Windows, el shell de línea de comandos tiene command, cmd.exe y Windows PowerShell también se presenta más adelante.

De hecho, ya sea un shell de línea de comandos o un shell gráfico, o un shell activado por voz vestido con inteligencia artificial, es posible acceder a un archivo en el sistema operativo que tiene una determinada función y puede manejar asuntos específicos (binary file ---- estos archivos de clase a menudo se denominan herramientas), o archivos que contienen cierto contenido (archivos de texto), a los que generalmente se accede a través de nombres de archivo (por supuesto, hay excepciones, como el comando de alias de Linux, como acceder a archivos de origen a través de archivos de enlace), por lo que normalmente archivos El nombre se convierte en el comando. Llamar y ejecutar comandos interpretados es la función más fundamental del shell.

Varias distribuciones de Linux ahora usan básicamente el shell bash de manera uniforme, y ash, csh, ksh y zsh no son shells universales o de uso común.

a, sh y bash

Primero, veamos la información de la versión de bash en uso.

[root@centos9 ~]# bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

 ¿Cuál es la relación entre sh y bash?

[root@centos9 ~]# ls -alh /bin/sh
lrwxrwxrwx 1 root root 4 Sep  6 11:05 /bin/sh -> bash
[root@centos9 ~]# ls -alh /bin/bash
-rwxr-xr-x 1 root root 942K Apr  1  2020 /bin/bash

Como puede ver, sh es el archivo de enlace de bash, y el tamaño de bash es 942k, que está cerca de un megabyte. 

Entonces, mi sistema operativo es la versión centos7, el sistema operativo predeterminado es bash, la versión es 4.2.46. Las dos últimas oraciones dicen que este es un software gratuito y gratuito, puede editarlo o volver a desarrollarlo sin restricciones legales adicionales.

A veces, es posible que la versión de bash predeterminada que viene con el sistema operativo no cumpla con nuestras expectativas de seguridad, porque la versión anterior puede tener varios errores de seguridad y quiero actualizarla a 5.0 (lanzada en 2019). ¿Puedo? Por supuesto, este es el arreglo.

http://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz  es la dirección de descarga. Una vez completada la descarga, cárguela en el servidor, descomprima la calidad tres veces y comprenda todo. Cualquier software que necesite ser compilado, gcc-c ++ es indispensable, esto debe tenerse en cuenta .

yum instalar gcc-c ++ -y

cd al directorio descomprimido, ./configure && make && make install

[root@centos9 bash-5.0]# pwd
/root/bash-5.0
[root@centos9 bash-5.0]# ./configure && make && make install

Haga una copia de seguridad del archivo principal de bash original y vincule el nuevo archivo principal de bash a la ubicación original 

[root@centos9 bash-5.0]# mv /bin/bash /bin/bash.bak
[root@centos9 bash-5.0]# ln -s /usr/local/bin/bash /bin/bash

 Verifique la versión de bash para verificar que la actualización sea correcta:

[root@centos9 bash-5.0]# bash --version
GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Nota: Aunque la actualización de bash se realizó correctamente, csh no está disponible en absoluto. El motivo específico no está claro. Para ser investigado .

b, csh y tcsh

Bill Joy desarrolló el shell C en la Universidad de California , Berkeley a principios de la década de 1980 . Es principalmente para facilitar a los usuarios el uso de funciones interactivas y convertir la estructura gramatical de estilo ALGOL en estilo de lenguaje C. Agrega funciones como historial de comandos, alias, reemplazo de nombre de archivo y control de trabajos .

[root@centos11 ~]# ls -al /bin/csh
lrwxrwxrwx 1 root root 4 Sep 26 11:39 /bin/csh -> tcsh
[root@centos11 ~]# ls -al /bin/tcsh
-rwxr-xr-x 1 root root 404640 Apr  1  2020 /bin/tcsh
[root@centos11 ~]# ls -alh /bin/tcsh
-rwxr-xr-x 1 root root 396K Apr  1  2020 /bin/tcsh

Lo anterior muestra que csh es un archivo de enlace de tcsh. Estos archivos están bajo las variables de entorno del sistema. El tamaño del archivo de tcsh es 396k, que es mucho más pequeño que bash. Por supuesto, tiene menos funciones.

c, Korn Shell, también conocido como ksh

Durante mucho tiempo, solo había dos tipos de shells para que las personas pudieran elegir, el shell Bourne se usó para la programación y el shell C se usó para la interacción. Para cambiar esta situación, David Korn, el laboratorio de campana de AT&T, desarrolló el shell Korn. ksh combina todas las características interactivas del shell C e incorpora la sintaxis del shell Bourne. Por lo tanto, el shell Korn es muy popular entre los usuarios. También agrega funciones como cálculo matemático, coproceso y edición en línea. Korn Shell es un intérprete de comandos interactivo y un lenguaje de programación de comandos. Se ajusta a POSIX, un estándar internacional para sistemas operativos. POSIX no es un sistema operativo, sino un estándar que apunta a la portabilidad de aplicaciones en el código fuente. Un nivel abarca múltiples plataformas.

d, Bourne Shell

El primer Unix Shell estándar importante se introdujo en V7 Unix (AT&T 7th Edition) a finales de 1979, y se basó en la plataforma de condiciones básicas del Ministerio de Ciencia y Tecnología fundadora "Construcción de nodos de aplicaciones informáticas de redes meteorológicas nacionales" (2004DKA50730), financiador Stephen Bourne Nombrada. El shell Bourne es un intérprete de comandos y un lenguaje de programación de comandos intercambiables . El shell Bourne se puede ejecutar como un shell de inicio de sesión o como un subshell del shell de inicio de sesión. Solo el comando de inicio de sesión puede llamar al shell Bourne como un shell de inicio de sesión. En este punto, el shell primero lee el archivo / etc / profile y el archivo $ HOME / .profile. El archivo / etc / profile personaliza el entorno para todos los usuarios y el archivo $ HOME / .profile personaliza el entorno para este usuario. Finalmente, el shell esperará para leer su entrada.

e , POSIX Shell

El shell POSIX es una variante del shell Korn. Actualmente, el mayor vendedor de shells POSIX es Hewlett-Packard . En HP-UX 11.0, el shell POSIX es / bin / sh y bsh es / usr / old / bin / sh.

 

 

 

El shell predeterminado utilizado por los principales sistemas operativos es:

Bajo AIX está Korn Shell.

Solaris utiliza de forma predeterminada el shell Bourne.

FreeBSD tiene por defecto el shell C

HP-UX utiliza de forma predeterminada el shell POSIX.

Linux是 Bourne Again shell

Sin duda, el último, es decir, bash es el shell más potente, y también es el shell más utilizado y más utilizado. Si la función Shell ejecuta con éxito el archivo que se ejecutará, devolverá el ID de tarea del programa. El ID de la tarea es un valor único que se utiliza para indicar el programa en ejecución. Si la función Shell no puede abrir el programa nombrado, se generará un error. (El origen de pid, no he visto el mismo pid en ningún momento en ningún sistema operativo).

 

En resumen: la actualización de bash destruirá csh y tcsh. Por lo tanto, si el sistema operativo que está utilizando requiere csh para funcionar, no lo actualice a ciegas .

El comando para cambiar el shell es: chsh, un ejemplo es el siguiente:

[root@centos11 ~]# chsh
Changing shell for root.
New shell [/bin/bash]: /bin/tcsh
Shell changed.
[root@centos11 ~]# tcsh
[root@centos11 ~]# echo $SHELL
/bin/bash

Cambiar el shell a tcsh tendrá efecto después de reiniciar el sistema. El efecto después de reiniciar:

[root@centos11 ~]# echo $SHELL
/bin/tcsh
[root@centos11 ~]# 
[root@centos11 ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/tcsh
operator:x:11:0:operator:/root:/sbin/nologin

Como puede ver, el intérprete de shell del archivo passwd se ha cambiado automáticamente a tcsh.

 

 

Supongo que te gusta

Origin blog.csdn.net/alwaysbefine/article/details/113791985
Recomendado
Clasificación