Fundamentos de Linux (4)

Encontrar el archivo variable de entorno

Variables de entorno

  1. variable

Para explicar las variables de entorno, primero hay que entender qué variables son, debe ser exacto decir que las variables de Shell , la variable llamada es el equipo utilizado para registrar un valor (no necesariamente un valor, que puede ser un carácter o cadena) de símbolos, y estos símbolos para varios de procesamiento aritmético. Las variables son generalmente uno a un valor de relación, su valor puede ser leído por la expresión y se asigna a las otras variables se pueden especificar directamente asignado a cualquier valor variable. Para mayor facilidad de cálculo y procesamiento, la mayor parte de la programación en lenguaje distingue el tipo de la variable para cada registro de números, caracteres o cadenas de tipos de datos y similares. las variables de shell básicamente de la misma, hay diferentes tipos (pero no el nombre del tipo designado específicamente), pueden estar involucrados en el cálculo, hay con ámbito .

Ámbito de la variable es decir, variable de rango válido * (como una función en un archivo de origen o el alcance global), dentro del rango de una sola variable del mismo nombre. Al salir de la variable válido, esta variable no existe como un general. *

Se puede utilizar instrucción declare crea una variable llamada tmp variables: $ declare tmp; (de hecho, no se puede declarar un pre-declaración de variables, el uso directo es decir, la creación) (sólo el nombre de variable de letras, números o guiones bajos, y no puede ser utilizado como un principio digitales ). Uso =número operador de asignación, el TMP variable de asignar a 123: $ tmp=123.

El valor de la variable leído , utilizando el echocomando y el $signo ($ símbolo de referencia utilizado para representar un valor variable): $ echo $tmp.

  1. Variables de entorno

Variable de entorno ámbito de las variables personalizadas a ser grande, como las variables de entorno SHELL actuando por sí mismo y sus hijos. En todos los sistemas UNIX y UNIX, cada proceso tiene su propia configuración variable de entorno, y por defecto, cuando se crea un proceso, además del proceso de creación se especifica explícitamente, heredará su deber proceso padre la mayor parte de la configuración del entorno. programa de Shell también se ejecuta como un proceso en la parte superior del sistema operativo, y la forma en la mayoría de los comandos se ejecutan en los procesos secundarios Shell Shell se ejecutará.

Nos tipo de variable por lo general implican tres maneras:

  • Shell proceso actual de las variables definidas por el usuario TMP variable privadas, como las anteriores, creamos sólo es válido en la corriente de Shell.
  • depósito propiamente dicho está incorporado en las variables.
  • Las variables personalizadas derivados de variables de entorno.

También hay tres comandos relacionados con el medio ambiente de las tres variables: set,env,export;
set: muestra la corriente de Shell todas las variables, incluida la incorporada en las variables de entorno (relacionados con la apariencia de Shell), las variables definidas por el usuario y las variables de entorno derivan.
env: Muestra las variables de entorno actuales asociados con el usuario, sino que también permite que el comando se ejecute en el entorno especificado.
export: Viendo a una variable derivada de Shell en una variable de entorno, sino que también se puede exportar como variable de las variables de entorno personalizado.

Puede ser más intuitivo de usar vimdiffherramienta para comparar las diferencias entre ellos:

$ temp=123
$ export temp_env=123
$ env|sort>env.txt
$ export|sort>export.txt
$ set|sort>set.txt

La salida del comando operación anterior a través del conducto |usando la sortcola de comandos, y luego redirigido al objeto en un archivo de texto.

$ vimdiff env.txt export.txt set.txt

Acerca de qué variables son variables de entorno, que puede ser simplemente interpretada como variables de entorno en el África sub-efectiva en comparación con el proceso actual, o no; aquí con el exportmando a gusto, para establecer una variable en el Shell temp=shiyanlouy, a continuación, crear un nuevo sub Shellvista tempvariables valores:
Aquí Insertar imagen Descripción
Nota: con el fin de distinguir de la variable ordinaria, generalmente se usa para establecer el nombre de la variable de entorno en mayúsculas.

  1. permanente

Pero después de que el problema se produjo cuando después de la parada, o cerca de la shell actual, las variables de entorno han ido ah. Cómo hacer que las variables ambientales permanentes?
Por la variable ciclo de vida de división, las variables de Linux se pueden dividir en dos categorías:

  • Permanente: la necesidad de modificar el fichero de configuración, variables permanente;
  • Temporal: El uso de la instrucción de la línea de comandos para la exportación, variables fallan cuando se cierra la concha.

Dos documentos importantes /etc/bashrc(algunos de Linux no tienen este documento) y /etc/profilese almacenaron en una variables de shell y el medio ambiente. También hay que señalar es la diferencia entre un archivo oculto en el directorio para cada usuario:

.profile 可以用 ls -a 查看
cd /home/shiyanlou
ls -a 

El .profileefecto únicamente permanente en el usuario actual. Escrito en /etc/profileno permanente para todos los usuarios, por lo que si desea agregar una variable de ambiente permanente, basta con abrir /etc/profile, añadir la variable de entorno final que desea añadir bien.

Encontrar un camino a la orden y el orden

Entramos en un comando en el Shell, Shell es cómo saber dónde encontrar los comandos y luego ejecutarlo? Esto se hace mediante la variable de entorno PATHpara buscar. El PATHinterior se guarda en el Shell de ruta de búsqueda de la ejecución del comando .

Compruebe PATHel contenido de la variable de entorno:

$ echo $PATH

Usted ve el resultado siguiente de forma predeterminada:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Por lo general, este tipo de directorio de la descentralización es un archivo ejecutable que cuando se ejecuta un comando en el Shell, el sistema seguirá el conjunto ruta PATH acuerdo con el orden en el directorio de encontrar, ya que hay un comando del mismo nombre de la fruta, a continuación, la ejecución del primer hallazgo .

Qué ejercicios para crear un simple scripts ejecutables Shell y el uso de un programa "hola mundo" en lenguaje C creado:

Crear un archivo de comandos de Shell:

$ cd ~
$ touch hello_shell.sh
$ gedit hello_shell.sh

Agregue la siguiente en el guión, Save and Exit (tenga cuidado de no omitir la primera línea, esto no es un comentario):

#!/bin/bash

for ((i=0; i<10; i++));do
    echo "hello shell"
done

exit 0

Añadir permisos de ejecución para el archivo:

$ chmod 755 hello_shell.sh

Ejecutar la secuencia de comandos:

$ cd ~
$ ./hello_shell.sh

Lenguaje C para crear un programa "hola mundo":

$ cd ~
$ gedit hello_world.c
#include <stdio.h>

int main(void)
{
    printf("hello world!\n");
    return 0;
}

Después de guardar un archivo ejecutable utilizando gcc (GCC genera un archivo ejecutable binario tiene los permisos predeterminados, no es necesario modificar):
$ gcc -o hello_world hello_world.c

Inicio guía Mybin crear un directorio, y mover los archivos hello_shell.sh y hello_world a ella:

$ cd ~
$ mkdir mybin
$ mv hello_shell.sh hello_world mybin/

Ahora se puede ejecutar dos programas fueron creados en el directorio simplemente mybin:

$ cd mybin
$ ./hello_shell.sh
$ ./hello_world

Volver al directorio principal, que es el mismo, haga pensar cuando esos dos programas, se encuentra el símbolo del sistema no puede encontrar, a menos que junto con la ruta completa del comando, pero que es muy conveniente, ¿cómo les gusta usar el sistema ejecutar el comando como un archivo de script o programa que lo crea? Entonces usted quiere mandar la ruta a la variable de entorno PATH.

Adición de una ruta personalizada a la variable de entorno "PATH"

Debemos tener en cuenta frente a PATHla parte interior de la trayectoria es :un delimitador, para que podamos añadir ruta personalizada:

$ PATH=$PATH:/home/shiyanlou/mybin

** Tenga en cuenta que hay que usar rutas absolutas. ** Ahora se puede ejecutar dos comandos en cualquier directorio de la (atención a la necesidad de eliminar la parte delantera ./).

variable de entorno PATH para anexar un camino, que sólo es válido en la corriente de Shell , una vez que salir de la terminal, a continuación, abra y encontrarán ineficaz. No hay forma de que la variable de entorno global para añadir efectiva? O llevarse a cabo de forma automática cada vez que la adición de una ruta personalizada al comando PATH arriba al empezar la Shell? Aquí nos preocupa que este último enfoque - de forma automática.

En el directorio personal de cada usuario, existe cada una de Shell llevará a cabo un script de configuración por defecto en el arranque para inicializar el entorno, incluyendo definida por el usuario añadir algunas variables de entorno, y así sucesivamente . zsh archivo de configuración se .zshrccorresponde con el perfil Bash .bashrc. Ellos etctambién tienen uno o más archivo de configuración global, pero por lo general sólo modifican los archivos de configuración en el directorio de usuario .

Sólo tiene que utilizar el siguiente comando para agregar contenido directamente .zshrcen:

$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc

>>muestra, además, una salida de forma redirección estándar a un archivo, >son redirigidos a cubrir un archivo. Se crea un nuevo archivo si no existe el archivo especificado.

Modificar y eliminar variables existentes

  • Modificar las variables
    ${变量名#匹配字串} : emprender el regreso del partido de cero, los datos de eliminación en línea con la cadena de búsqueda más corto
    ${变量名##匹配字串}: comienzan detrás de partido de cero, los datos de eliminación en línea con la combinación de cadena más larga
    ${变量名%匹配字串}: hacia adelante empiezan desde el partido de la cola, los datos de eliminación en línea con la cadena de búsqueda más corto
    ${变量名%%匹配字串}: partidos empiezan desde la cola hacia adelante, elimine la línea con la cadena mas larga de los datos
    ${变量名/旧的字串/新的字串}: la primera cadena se reunirá con la vieja cadena se reemplaza con una nueva cadena
    ${变量名//旧的字串/新的字串}: satisfaga todas las cuerdas para reemplazar la antigua cadena a la nueva cadena

Para modificar el frente para agregar PATHvariables de entorno. Con el fin de evitar errores operativos dirigidos a un comando no puede ser encontrado, el primero PATH asignado a un nuevo camino variable personalizada:

$ path=$PATH
$ echo $path
$ path=${path%/home/shiyanlou/mybin}
# 或使用通配符,*表示任意多个任意字符
$ path=${path%*/mybin}
  • Eliminar las variables
    pueden utilizar el unsetcomando para eliminar una variable de entorno:
$ unset temp

Deje que las variables de entorno que tengan efecto inmediato

Después de que el script de configuración previa para modificar un archivo en el shell (zsh bajo dicho archivo de configuración de un directorio en el hogar .zshrc), se puede utilizar el sourcecomando para dejar que tome efecto inmediatamente, tales como:

$ cd ~
$ source .zshrc

sourceHay una orden de seudónimo ., si el comando anterior reemplazar .manera sería:

$ . ./.zshrc

En uso ., cuando la necesidad de prestar atención al punto que indica el área separada actual de la ruta. Tenga en cuenta que el primer punto seguido de un espacio, y la parte posterior del documento debe especificar el nombre absoluto o relativo ruta completa, no se requiere fuente.

Buscar archivos

  • whereis Simple y rápido
$ whereis who
$ whereis find

whereis findEncontrado las tres vías, dos de ruta ejecutable y la ruta en un archivo de ayuda en línea el hombre, la búsqueda rápida, ya que no se aparta de su disco duro de encontrar, pero las consultas directamente desde la base de datos. whereis sólo puede buscar un archivo binario (-b), el hombre archivo de Ayuda (-m) y los archivos de código fuente (-s). Si desea un enfoque más integral de resultados de búsqueda se pueden obtener usando el locatecomando.

  • locateRápido y todo-
    a través de búsquedas de bases de datos "/var/lib/mlocate/mlocate.db", pero esta base de datos no se actualiza en tiempo real, el sistema realizará una automática de tareas programadas diarias utilizando updatedbcomandos actualizada, así que a veces los archivos que acaba de agregar, puede usted no encontrará la necesidad de ejecutar manualmente un updatedbcomando. Se puede utilizar para encontrar diferentes tipos de archivos en el directorio especificado, como encontrar /etctodo ello con shlos archivos que comienzan (nota que no sólo buscará en el directorio / etc, subdirectorio de búsqueda automáticamente recursiva):
$ sudo apt-get update
$ sudo apt-get install locate
$ locate /etc/sh

Encontrar todos los archivos jpg / usr / share / bajo (nota que se añade *delante del número de escape de barra invertida, de lo contrario, no se encontrará):

$ locate /usr/share/\*.jpg

Si desea contar el número puede añadir -cparámetros, -iparámetro puede ignorar el caso de averiguarlo.

  • whichPequeño pero
    whichsí es un sistema incorporado en Shell de comandos, que suelen utilizar whichpara determinar si una instalación de software determinado, ya que sólo de PATHla variable de entorno especificado al comando de búsqueda de ruta:

  • findFina y bien
    finddeben ser varios comandos los más poderosos, y puede no sólo por nombre de archivo para encontrar el tipo de archivo y pueden buscar en atributos (tales como marcas de tiempo de archivos, permisos de archivo, etc.) archivos.

$ sudo find /etc/ -name interfaces

Este comando indica al directorio / etc /, interfaces de llamadas el nombre del archivo o directorio de búsqueda. Esta es la forma más común del comando find, el primer argumento ** encontrar un lugar para buscar **.

Tenga en cuenta que la ruta de comandos hallazgo como el primer parámetro, el formato básico del comando find [path] [option] [action].

parámetros de comandos relacionados con el tiempo:
-atime: hora del último acceso
-ctime: La última vez modificar el contenido del archivo de
-mtimela hora atributos de archivo modificada por última vez:

En parámetros -mtime Ejemplo:
-mtime n: n es un número, expresado como modificados n días antes de la "días de" Archivo
-mtime +n: n listas días antes de la (n día no incluye en sí) están archivo modificado
-mtime -n: Listas en cuestión de días n (incluyendo n día en sí) se modifican archivo
-newer file: archivo a un archivo existente, el archivo es más reciente que la lista de nombres de archivo

por ejemplo, la lista del directorio principal, el mismo día (en 24 horas) los archivos modificados:

$ find ~ -mtime 0

Castañas: Buscar archivos

Objetivos: 1) para encontrar el sources.listarchivo; 2) el propietario del archivo en lugar zhangsan; 3) el permiso para modificarlo para leer y escribir con sólo a sí mismo;

sudo find /etc -name sources.list
sudo chown zhangsan /etc/apt/sources.list
sudo chmod 600 /etc/apt/sources.list

Fuente: edificio de laboratorios

Publicado 33 artículos originales · ganado elogios 1 · vistas 1244

Supongo que te gusta

Origin blog.csdn.net/weixin_44783002/article/details/104627973
Recomendado
Clasificación