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?
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:
Molti file di configurazione nella home directory degli utenti hanno semplicemente la precedenza / aggiunta a quelli nella /etc
home 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-backup
ad 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/profile
dopo eventuali modifiche potrebbe funzionare)
[modifica: rimosso questo link non funzionante] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]
~/.bash_logout
e /etc/bash.bash_logout
non funzionano. :(
/etc/profile.d/
sarà non essere raccolti da destra sotto-processo? Quindi l'alias è disponibile solo quando Bash è la shell di accesso?
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.d
directory 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.
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).
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.
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.
.bashrc
file e accoda sempre indipendentemente dal fatto che la linea sia già presente nel loro file.
/etc/skel/.bashrc
per modificare l'~/.bashrc
aspetto dei contenuti degli utenti appena creati.