Come posso impostare un singolo file .bashrc per diversi utenti?


30

durante il mio lavoro devo aggiungere costantemente comandi alias a bashrc, la maggior parte di questi comandi deve essere eseguita da altri utenti. c'è un modo per aggiungere comandi alias a un bashrc da una fonte esterna?

Risposte:


40

Molti file di configurazione nella home directory degli utenti hanno semplicemente la precedenza / aggiunta a quelli nella /etchome page degli utenti, ad esempio le impostazioni di GIMP nella home page degli utenti sono presenti ~/.gimp-2.*, il che si aggiunge alla configurazione dell'intero sistema /etc/gimp/2.0.

Pertanto ~/.bashrc, è possibile modificare i file di configurazione del sistema /etc/bash.bashrc (per funzioni / alias ) o /etc/profile (per l'ambiente) - è possibile l'elenco completo da 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

Questo avviso viene fornito per alcuni sistemi Linux nei file:

# 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.

Quindi è possibile modificare quei file, è consigliabile eseguirne prima il backup ( cp /etc/bash.bashrc /etc/bash.bashrc-backupad esempio) o creare uno script shell /etc/profile.d- ad esempio è possibile crearne uno con questi comandi (con sudo / come root):

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

Quindi aprilo con nano /etc/profile.d/custom.sh

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

E controlla se funziona visualizzando se appare nell'output di alias- Nota che potrebbe essere necessario disconnettersi / accedere o riavviare per vedere eventuali modifiche (se non lo si desidera, l'esecuzione source /etc/profiledopo eventuali modifiche potrebbe funzionare)

[modifica: rimosso questo link non funzionante] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]


5
Un sacco di buoni suggerimenti lì. Penso che ci sia un'altra opzione, che vale la pena menzionare anche. È possibile modificare /etc/skel/.bashrcper modificare l' ~/.bashrcaspetto dei contenuti degli utenti appena creati.
Kasperd,

@kasperd - bella idea (puoi fare una risposta se vuoi)
Wilf

Nella mia esperienza, ~/.bash_logoute /etc/bash.bash_logoutnon funzionano. :(
Paddy Landau,

AFAIK alias /etc/profile.d/sarà non essere raccolti da destra sotto-processo? Quindi l'alias è disponibile solo quando Bash è la shell di accesso?
Franklin Yu,

Penso che alcuni di essi funzionino solo quando vengono utilizzati come dire un TTY come unico ambiente, in un terminale desktop alcuni di essi non possono essere utilizzati. Dovrei testarlo per verificarlo però e non posso al momento!
Wilf,

7

Vai a /etc/bash.bashrc

vim /etc/bash.bashrc

e crea il tuo alias lì.

aggiungi il tuo alias nell'ultima riga.

alias abc = "qualunque sia"

Tale alias diventerà globale per tutti gli utenti.

ma per motivi di sicurezza non lo consigliamo.

c'è una profile.ddirectory che contiene i file dell'ambiente dell'utente

vai a

cd /etc/profile.d/

alias vim

e aggiungi i tuoi alias qui.

senza influenzare i file di sistema. È il modo giusto e sicuro per lavorare con i tuoi file di ambiente.


3

C'è già una risposta accettata qui, ma potresti prendere in considerazione l'uso di una qualche forma di moduli di ambiente per gestire la configurazione a livello di sistema degli ambienti utente piuttosto che fare confusione con i file in /etc/profile.d, ecc. Ciò è particolarmente vero se vuoi gestire questo controllo in un unico posto attraverso molte shell. Lmod (in fase di sviluppo molto attivo), moduli C / TCL (la soluzione classica) o Cmod (leggero).


1

Non so se lo sto facendo bene, ma funziona per me mantenere una directory / home / ComunAtodos (in maiuscolo e in spagnolo per rendere evidente che non è una directory nativa di Linux) e mettere .bashrc, .nanorc e .bash_aliases lì. Quindi faccio riferimento a quelli in /etc/skel/.profile in modo che i nuovi utenti puntino a loro, e aggiungo solo extra a utenti specifici che ne hanno bisogno.


-1

Sono veramente nuovo nel sistema operativo Linux, ma ho fatto uno schizzo di uno script bash che funziona per modificare tutti i file .bashrc degli utenti e non il file di 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

Ok, quindi so che quello script funziona, ma non lo faccio se è privo di errori :) Inoltre puoi modificarlo in modo che non coinvolga tutti gli utenti, forse crei un file per tutti gli utenti che hanno bisogno del loro file .bashrc personalizzato.


3
La prima riga (dove leggi / etc / passwd) sembra non fare nulla. La tua quarta riga sembra essere un errore (e non vedo perché vorresti eliminare gli errori). "exit 0" è ridondante. Ciò richiede che tutti gli utenti abbiano già un .bashrcfile e accoda sempre indipendentemente dal fatto che la linea sia già presente nel loro file.
thomasrutter,

Stavo pensando di ottenere i nomi di tutti gli utenti con quella linea? Ma ora che ci penso, potrei semplicemente tagliare </ etc / passwd, c'erano molti nomi in quella lista, quindi non volevo che l'IT facesse degli errori per coloro che non hanno il file bashrc. Come puoi aggiungere solo se la linea non esiste? E potresti scrivere lo script corretto per questo tipo di rask, per favore, sto usando Linux da una settimana.
Farhad Rahimi,

Sembra che tu abbia già alcune abilità ma questo tutorial è buono per gli script di shell: shellscript.sh . Per altre domande come come aggiungere una riga solo se non esiste già, sentiti libero di farle come nuove domande qui.
thomasrutter,
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.