GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo escribir un script de shell de origen automático en /etc/profile?

¿Escuché a través de la vid que los archivos en /etc/profile se obtendrán automáticamente por bash al iniciar sesión?

Intenté escribir algo simple en /etc/profile:

 echo "echo 'foo'" > /etc/profile/foo.sh

pero tengo este extraño error:

bash: /etc/profile/foo.sh: Not a directory

¿Hay una manera correcta de hacer esto?

Respuesta aceptada:

/etc/profile es un archivo De ahí el error al intentar crear /etc/profile/foo.sh .

/etc/profile.d es el directorio en el que estás pensando. Los scripts colocados allí se obtienen al iniciar sesión. En su ejemplo, le gustaría crear /etc/profile.d/foo.sh .

La lógica del script detrás de esto y cómo se extrae se puede ver a continuación. Hay un código similar en /etc/profile , /etc/bashrc , /etc/csh.cshrc y /etc/csh.login .

$ grep -A 8 ^for.*profile.d /etc/profile
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done
$

Ejemplo de creación e invocación de un script de este tipo:

# echo id >/etc/profile.d/foo.sh
# su - steve
Last login: Sat Jun 23 21:44:41 UTC 2018 on pts/0
uid=1000(steve) gid=1001(steve) groups=1001(steve),4(adm),39(video),1000(google-sudoers) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$

Más información en ¿Qué hacen los scripts en /etc/profile.d?


Linux
  1. CentOS / RHEL:cómo recuperarse de un archivo /etc/passwd eliminado

  2. Agregar usuarios a sudoers a través de un script de shell

  3. Ajustar $PATH en /etc/profile no afecta a la raíz

  4. Cómo incluir todos los archivos de un directorio en el script de shell (/etc/init.d/iptables en este caso)

  5. ¿Cómo puedo revertir un chmod en el directorio etc?

Cómo escribir un script Bash con ejemplos

Cómo usar variables en secuencias de comandos de Shell

Cómo escribir un script de Shell en Ubuntu

¿Cómo ejecutar un comando en un script de Shell?

Omitir el comando/script especificado en /etc/passwd

¿Cómo modificar /etc/hosts desde scripts de shell?