¿Cómo puedo configurar un único archivo .bashrc para varios usuarios?


30

Durante mi trabajo, necesito agregar constantemente comandos de alias a bashrc, la mayoría de esos comandos deben ser ejecutados por otros usuarios. ¿Hay alguna forma de agregar comandos de alias a un bashrc desde una fuente externa?

Respuestas:


40

Muchos archivos de configuración en el directorio de inicio de los usuarios simplemente anulan / agregan a los que están en el /etc- por ejemplo, la configuración de GIMP en el inicio de los usuarios se encuentra ~/.gimp-2.*, lo que se agrega a la configuración de todo el sistema /etc/gimp/2.0.

Por lo tanto ~/.bashrc, puede editar los archivos de configuración de todo el sistema /etc/bash.bashrc (para funciones / alias ) o /etc/profile (para cosas de entorno) ; puede ver la lista completa en man bash:

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bash_logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

Esta advertencia se da para algunos sistemas Linux en los archivos:

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

Por lo tanto, puede editar esos archivos, es posible que desee hacer una copia de seguridad primero ( cp /etc/bash.bashrc /etc/bash.bashrc-backuppor ejemplo) o crear un script de shell /etc/profile.d; por ejemplo, puede crear uno con estos comandos (con sudo / as root):

touch /etc/profile.d/custom.sh
chmod +x /etc/profile.d/custom.sh

Luego ábrelo con nano /etc/profile.d/custom.sh

#!/bin/sh
alias ls='ls -lah'

Y verifique si funciona al ver si aparece en la salida de alias- Tenga en cuenta que es posible que deba cerrar sesión / iniciar sesión o reiniciar para ver los cambios (si no lo desea, ejecutar source /etc/profiledespués de que cualquier cambio pueda funcionar)

[editar: eliminó este enlace muerto] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]


55
Muchas buenas sugerencias allí. Creo que hay otra opción, que también vale la pena mencionar. Se puede editar /etc/skel/.bashrcpara cambiar el ~/.bashrcaspecto de los contenidos para los usuarios recién creados.
kasperd

@kasperd - buena idea (puedes responder si quieres)
Wilf

En mi experiencia, ~/.bash_logouty /etc/bash.bash_logoutno funcionan. :(
Paddy Landau

El alias de AFAIK no se/etc/profile.d/ recogerá por subproceso, ¿verdad? Entonces, ¿el alias solo está disponible cuando Bash es el shell de inicio de sesión?
Franklin Yu

Creo que algunos de ellos solo funcionan cuando se usa en digamos un TTY como el único entorno, en un terminal de escritorio algunos de ellos no se pueden usar. ¡Sin embargo, tendría que probar esto para verificar esto y no puedo en este momento!
Wilf

7

Ir /etc/bash.bashrc

vim /etc/bash.bashrc

y haz tu alias allí.

agrega tu alias en la última línea.

alias abc = "lo que sea"

Ese alias se volverá global para todos los usuarios.

pero por razones de seguridad no te recomendamos eso.

hay un profile.ddirectorio que contiene archivos de entorno de usuario

ir

cd /etc/profile.d/

alias vim

y agrega tus alias aquí.

sin afectar los archivos de su sistema. Es una forma segura y correcta de trabajar con los archivos de su entorno.


3

Ya hay una respuesta aceptada aquí, pero podría considerar utilizar algún tipo de módulos de entorno para manejar la configuración de todo el sistema de los entornos de usuario en lugar de meterse con los archivos en /etc/profile.d, etc. Esto es especialmente cierto si desea gestione este control en un solo lugar a través de muchos proyectiles. Lmod (en desarrollo muy activo), módulos C / TCL (la solución clásica) o Cmod (ligero).


1

No sé si lo estoy haciendo bien, pero me funciona mantener un directorio / home / ComunAtodos (en mayúscula y en español para hacer evidente que no es un directorio nativo de Linux) y poner .bashrc, .nanorc y .bash_aliases allí. Luego hago referencia a aquellos en /etc/skel/.profile para que los nuevos usuarios los señalen, y solo agrego extras a usuarios específicos que los necesitan.


-1

Soy realmente nuevo en el sistema operativo Linux, pero hice un boceto de un script bash que funciona para modificar todos los archivos .bashrc de los usuarios y no el archivo del sistema /etc/.bashrc.

#!/bin/bash

X=$( cat etc/passwd | cut -f1 -d: ) #All-users

For X in /home/*/.bashrc ; do 

echo "alias ls='ls -al'" >> $X

2>/dev/null

done

source $X

exit 0

Bien, sé que ese script funciona, pero no lo hago si está libre de fallas :) También puedes modificarlo para que no involucre a todos los usuarios, tal vez hagas un archivo para todos los usuarios que necesitan su archivo .bashrc Personalizado.


3
La primera línea (donde lee / etc / passwd) parece no hacer nada. Su cuarta línea parece ser un error (y no veo por qué querría suprimir los errores). La "salida 0" es redundante. Esto requiere que todos los usuarios ya tengan un .bashrcarchivo, y siempre se agrega independientemente de si la línea ya está en su archivo.
thomasrutter

Estaba pensando en obtener los nombres de todos los usuarios con esa línea? Pero ahora que lo pienso, podría cortar </ etc / passwd, había muchos nombres en esa lista, así que no quería que TI cometiera errores para aquellos que no tienen bashrc filé. ¿Cómo se puede agregar solo si la línea no existe? ¿Y podría escribir el script adecuado para este tipo de rask, por favor, solo he estado usando Linux durante una semana?
Farhad Rahimi

Parece que ya tienes algunas habilidades, pero este tutorial es bueno para el script de shell: shellscript.sh . Para otras preguntas, como cómo agregar una línea solo si aún no existe, siéntase libre de hacerlas como nuevas preguntas aquí.
thomasrutter
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.