Come posso preimpostare gli alias per tutti gli utenti?


38

Ho Ubuntu 14.04.2. Voglio farlo in modo che tutti gli utenti abbiano automaticamente un set specifico di alias. Ho i miei alias impostati nel mio .bashrc personale, ma non voglio copiarli manualmente negli altri utenti. Idealmente, dovrebbe impostarli automaticamente anche per gli utenti appena creati.


1
Per "preimpostazione", vuoi dire che vuoi che tutti i nuovi utenti vengano creati con determinati alias, che possono quindi facilmente riconfigurare? O vuoi dire che vuoi creare alias globali, in modo tale che tutti gli utenti li abbiano sempre (e siano in grado di ridefinirli / indefinirli ... ma non vederli quando guardano attraverso i propri file di configurazione, che potrebbero trovare befuddling)? O qualcos'altro? Correlati: Sottolineando .bashrc e .bash_profile (nonostante il suo strano titolo, credo che questa domanda e questa siano in realtà abbastanza simili).
Eliah Kagan,

Risposte:


50

Puoi creare uno script /etc/profile.d/per creare alias per tutti gli utenti:

  1. Crea un file chiamato 00-aliases.sh(o qualsiasi altro nome di fantasia) in /etc/profile.d:

    gksu gedit /etc/profile.d/00-aliases.sh
    
  2. Metti alias in questo file. Esempio:

    alias foo='bar --baz'
    alias baz='foo --bar'
    
  3. Salva il file

  4. Riavviare eventuali terminali aperti per applicare le modifiche.
  5. Godere!

Alcune note:

  • /etc/profileè un file globale che viene eseguito prima ~/.profile.
  • /etc/profile.d/ è una cartella che contiene script chiamati da /etc/profile
  • Quando /etc/profileviene chiamato (quando si avvia / login un guscio), va alla ricerca di tutti i file che terminano in .shin /etc/profile.d/e li esegue con uno di questi comandi:

    source /etc/profile.d/myfile.sh
    

    . /etc/profile.d/myfile.sh
    
  • Sto mettendo 00-davanti al nome del file per farlo eseguire prima del resto degli script.
  • Puoi anche aggiungere i tuoi alias /etc/profile, ma questo non è raccomandato.

2
Funziona perfettamente! Potete darmi una breve spiegazione di quale sia lo scopo di /etc/profile.d?
Brian Sizemore,

1
@BrianSizemore: ho aggiornato la mia risposta con alcune spiegazioni. Hai qualche domanda in più?
Helio,

1
Questo lo spiega molto bene. Il chiarimento mi aiuta a sviluppare anche altri usi. Grazie per tutto l'aiuto!
Brian Sizemore,

4
Il metodo in questa risposta non dovrebbe essere usato. Gli alias nei .shfile in /etc/profile.d/(o /etc/profile) verranno definiti solo per le shell di accesso e non funzioneranno nelle shell interattive non di accesso. A differenza delle variabili di ambiente, bash non può esportare gli alias in processi figlio, nemmeno le shell bash figlio. Questo metodo potrebbe funzionare correttamente se viene testato solo nelle shell di accesso, come la shell originale ottenuta accedendo da una console virtuale o tramite SSH, ma non riesce nelle loro shell figlio e fallisce anche nelle shell avviate dalle finestre del terminale della GUI.
Eliah Kagan,

2
@Helio La mia risposta a Undertanding .bashrc e .bash_profile offre altri due metodi, a seconda di quale sia l'obiettivo, oltre a una spiegazione dettagliata. Non sono sicuro se questa o quella domanda possano essere considerate duplicate. Ho commentato questa domanda per ottenere chiarimenti dall'OP sui loro bisogni. Questa domanda ha una portata più ristretta rispetto a quella, quindi suppongo che sarebbe OK per me pubblicare una breve risposta qui che copra parte del materiale nella mia lunga lì. (Per ora, spero di ottenere una risposta dall'OP al mio commento.)
Eliah Kagan,


5

Un alias funzionerà solo all'interno di una shell. Se desideri qualcosa di ampiamente accessibile come un eseguibile, puoi aggiungere un piccolo script di scelta rapida /usr/bin, ad esempio:

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

Il "$@"passa attraverso tutti gli argomenti per l'eseguibile. Il nome dello script sarà il nome dell'eseguibile.

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


Questa risposta sembra non correlata. La risposta accettata risponde correttamente alla domanda mentre questo sembra fornire una soluzione alternativa.
Brian Sizemore,

3
@BrianSizemore Ho avuto la tua stessa domanda ma mi sono imbattuto in questa soluzione che era più appropriata nel mio caso; speriamo che possa aiutare gli altri in una situazione simile. Per molte persone, l'alias andrà bene.
jtpereyda,

1
@BrianSizemore Questa risposta chiarisce un malinteso comune (che anch'io ho avuto) ed è utile e direttamente correlata.
a20

0

/ Etc / bashrc

  • Alias ​​e funzioni di sistema
  • Le cose dell'ambiente vanno in / etc / profile

NON è una buona idea cambiare questo file se non sai cosa stai facendo. È molto meglio creare uno script shell custom.sh in /etc/profile.d/ per apportare modifiche personalizzate al proprio ambiente, poiché ciò impedirà la necessità di unirsi in futuri aggiornamenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.