GNU/Linux >> Linux Esercitazione >  >> Linux

La differenza tra ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc …?

Risposte alle domande su SO e askubuntu, oltre a sfogliare (e leggere le intestazioni di) $HOME e /etc/ , indica un numero di file che possono essere utilizzati per impostare le variabili di ambiente, tra cui:

  • ~/.profile
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.gnomerc
  • ~/.Rprofile
  • /etc/bash_bashrc
  • /etc/profile
  • /etc/screenrc

Raccolgo quei file in /etc/ funziona per tutti gli utenti mentre i file in $HOME sono specifici dell'utente. Raccolgo anche quel .profile viene caricato al login mentre .bashrc caricato quando /bin/bash viene eseguito. Comprendo anche che programmi diversi hanno file di impostazioni diversi (ad es. .Rprofile per R). Ma gradirei qualche chiarimento:

  • Sono *rc e *profile file fondamentalmente diversi?
  • Qual ​​è lo scopo di tali file (ad es. quali file sono comunemente usati con Linux)
  • Esiste una gerarchia (ad es. .bashrc sovrascrive le variabili impostate in .settings )
  • Qual ​​è un buon riferimento per questa classe di file? Per le opzioni in questi file?

Domande collegate

  • "Come accedere a una variabile di ambiente bash dall'interno di R in emacs-ess?"
  • "Differenza tra l'avvio di un'applicazione da una scorciatoia da tastiera e il terminale?"

Risposta accettata:

L'organizzazione dei file di configurazione è molto meno uniforme di quanto le tue domande sembrino implicare. Non c'è "classe", non c'è "gerarchia" e non c'è uno "zar di configurazione" globale né un comitato che decreti una sintassi comune o altre belle generalizzazioni pulite come quelle che stai cercando. C'è solo una moltitudine di applicazioni separate come R , bash , screen e l'ambiente desktop GNOME, ognuno dei quali ha i propri modi di fare le cose, quindi dovresti guardare la documentazione per ogni singolo programma per rispondere a qualsiasi specifico domande su un particolare file. Se sembra ad-hoc, è perché lo è:la maggior parte del software Unix/Linux è stato sviluppato per scopi diversi da persone diverse che hanno eseguito la configurazione in modo leggermente diverso.

Per rispondere in modo puntuale alle altre tue domande:

  • *rc e *profile non significa molto, quindi non è possibile rispondere a questa domanda. "rc" è semplicemente un'abbreviazione o un suffisso comunemente usato per i file di configurazione. La sua etimologia risale a tempi antichi (in anni di computer), e probabilmente significa eseguire comandi (da runcom). Solo perché le applicazioni usano la stessa parola non significa che siano d'accordo sulle convenzioni. "profilo" è un suffisso molto meno comune.

  • Definisci "ambito". La maggior parte delle applicazioni non condivide i file di configurazione con altre applicazioni non correlate. L'unica possibile eccezione è /etc/profile e .profile , che può essere utilizzato da più shell differenti (incluso almeno sh e bash ). C'è qualcosa chiamato ambiente associato a ogni processo in esecuzione che può contenere variabili che possono influenzare il comportamento di detto processo. In genere, le variabili di ambiente sono impostate dai file di configurazione della shell appropriati, o forse dai file di configurazione di qualsiasi ambiente desktop grafico che stai utilizzando. Ci sono anche file di configurazione per "librerie", come .inputrc per readline e .gtkrc* per GTK, che interesserà tutte le applicazioni che utilizzano la libreria.

  • No, non esiste una gerarchia globale per i file di configurazione. Ancora una volta, fare riferimento alla documentazione per il programma specifico in questione, ad esempio bash manuale per bash . Una convenzione generale su cui di solito puoi fare affidamento è che le impostazioni dell'utente in $HOME sovrascrivere la configurazione a livello di sistema in /etc . Ciò si ottiene in genere leggendo il file utente dopo quello di sistema, in modo che le impostazioni successive sovrascrivano quelle precedenti. Tuttavia, questa non è una garanzia e per le risposte definitive dovresti fare riferimento alla documentazione per il programma specifico che stai utilizzando.

  • Non esiste una "classe", almeno nessuna abbastanza generale da comprendere tutti i file che hai elencato nella tua domanda, quindi la domanda su un riferimento per tale "classe" è discutibile. Ancora una volta, fai riferimento alla documentazione del programma specifico che stai utilizzando.

Correlati:Unire le cartelle con mv?
Linux
  1. La differenza tra /opt e /usr/local?

  2. Centos:qual è la differenza tra /usr/lib/systemd/system e /etc/systemd/system?

  3. Come viene aggiornato /etc/motd?

  4. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  5. Differenza tra /etc/crontab e crontab -e

Il modo giusto per modificare i file /etc/passwd e /etc/group in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

Qual è la differenza tra /tmp e /run?

Perché le directory /home, /usr, /var, ecc. hanno tutte lo stesso numero di inode (2)?

Differenza tra /etc/hosts e /etc/resolv.conf

Come configurare /etc/issues per mostrare l'indirizzo IP per eth0