¿Cómo puedo preestablecer alias para todos los usuarios?

38

Tengo Ubuntu 14.04.2. Quiero hacerlo para que todos los usuarios tengan automáticamente un conjunto específico de alias. Tengo mis alias configurados en mi .bashrc personal, pero no quiero tener que copiarlos manualmente en los otros usuarios. Idealmente, también debería establecerlos automáticamente para los usuarios recién creados.

Brian Sizemore
fuente
1
Por "preestablecido", ¿quiere decir que desea que todos los nuevos usuarios se creen con ciertos alias, que luego pueden reconfigurar fácilmente? ¿O quiere decir que desea crear alias globales, de modo que todos los usuarios los tengan todo el tiempo (y puedan redefinirlos / no definirlos ... pero no verlos cuando examinen sus propios archivos de configuración, que podrían encontrar desconcierto)? ¿O algo mas? Relacionado: Entender .bashrc y .bash_profile (a pesar de su título extraño, creo que esa pregunta y esta en realidad son bastante similares).
Eliah Kagan

Respuestas:

50

Puede crear un script /etc/profile.d/para crear alias para todos los usuarios:

  1. Cree un archivo llamado 00-aliases.sh(o cualquier otro nombre elegante) en /etc/profile.d:

    gksu gedit /etc/profile.d/00-aliases.sh
    
  2. Ponga alias en este archivo. Ejemplo:

    alias foo='bar --baz'
    alias baz='foo --bar'
    
  3. Guarda el archivo

  4. Reinicie cualquier terminal abierta para aplicar los cambios.
  5. ¡Disfrutar!

Algunas notas:

  • /etc/profilees un archivo global que se ejecuta antes ~/.profile.
  • /etc/profile.d/ es una carpeta que contiene scripts llamados por /etc/profile
  • Cuando /etc/profilese llama (cuando inicia / inicia sesión en un shell), busca los archivos que terminan .shen /etc/profile.d/y los ejecuta con uno de estos comandos:

    source /etc/profile.d/myfile.sh
    

    . /etc/profile.d/myfile.sh
    
  • Estoy poniendo 00-antes del nombre del archivo para que se ejecute antes que el resto de los scripts.
  • También puede agregar sus alias /etc/profile, pero esto no es recomendable.
Helio
fuente
2
¡Funciona perfectamente! ¿Me puede dar una breve explicación de cuál es el propósito de /etc/profile.d?
Brian Sizemore
1
@BrianSizemore: Actualicé mi respuesta con algunas explicaciones. ¿Tienes alguna consulta más?
Helio
1
Esto lo explica muy bien. La aclaración me ayuda a desarrollar otros usos también. ¡Gracias por toda la ayuda!
Brian Sizemore
44
El método en esta respuesta no debe usarse. Los alias en los .sharchivos en /etc/profile.d/(o /etc/profile) se definirán solo para shells de inicio de sesión y no funcionarán en shells interactivos que no sean de inicio de sesión. A diferencia de las variables de entorno, bash no puede exportar alias a procesos secundarios, ni siquiera shells secundarios. Puede parecer que este método funciona correctamente si solo se prueba en shells de inicio de sesión, como el shell original obtenido al iniciar sesión en una consola virtual o mediante SSH, pero falla en sus shells secundarios y también falla en shells iniciados por las ventanas de terminal GUI.
Eliah Kagan
2
@Helio Mi respuesta a Undertanding .bashrc y .bash_profile ofrece otros dos métodos, según cuál sea el objetivo, junto con una explicación detallada. No estoy seguro de si esta o aquella pregunta puede considerarse un duplicado. He comentado esta pregunta para obtener aclaraciones del OP sobre sus necesidades. Esta pregunta tiene un alcance más limitado que esa, así que supongo que estaría bien que publique una respuesta breve aquí que cubra parte del material en mi larga pregunta allí. (Por ahora, espero recibir una respuesta del OP a mi comentario).
Eliah Kagan
5

Un alias solo funcionará dentro de un shell. Si desea algo tan accesible como un ejecutable, puede agregar un pequeño script de acceso directo a /usr/bin, por ejemplo:

#!/bin/sh
ls -l "$@"

El "$@"pasa todos los argumentos al ejecutable. El nombre del script será el nombre del ejecutable.

Fuente: https://unix.stackexchange.com/a/52509/15954

jtpereyda
fuente
Esta respuesta parece no estar relacionada. La respuesta aceptada responde correctamente la pregunta, mientras que esto parece proporcionar una solución alternativa.
Brian Sizemore
3
@BrianSizemore Tenía su misma pregunta pero me topé con esta solución que era más apropiada en mi caso; con suerte ayudará a otros en una situación similar. Para muchas personas, el alias estará bien.
jtpereyda
1
@BrianSizemore Esta respuesta aclara un error común (que también tuve) y es útil y está directamente relacionado.
a20
0

/ etc / bashrc

  • Sistema amplio de funciones y alias
  • El medio ambiente va en / etc / profile

NO es una buena idea cambiar este archivo a menos que sepa lo que está haciendo. Es mucho mejor crear un script de shell custom.sh en /etc/profile.d/ para realizar cambios personalizados en su entorno, ya que esto evitará la necesidad de fusionarse en futuras actualizaciones.

CentoS
fuente