Nessun file bashrc nella mia directory home


14

Ecco cosa ho annotato dalla mia lezione:

  • Trova il file .bashrcnella tua home directory
  • fare vi .bashrc
  • Quando inserisci una cartella dell'applicazione da qualche parte, assicurati che il suo indirizzo sia nella variabile percorso.

Il problema è che non ho un .bashrcfile nella mia home directory. C'è solo un .bash_historyfile a casa mia.

Se vado alla radice, c'è un etc/bash.bashrcfile lì, ma penso che farà delle modifiche per tutti gli utenti e non solo per me. Voglio aggiungere questo percorso solo per me stesso. Non dovrebbe influire sugli altri. Inoltre non c'è alcuna $PATHvariabile in quel file bashrc, quindi sono ancora più confuso.

Risposte:


20

Non dimenticare che è un file nascosto all'interno della tua home directory (non saresti il ​​primo a fare un ls -le pensando che non è lì).

Seguire ...

ls -la ~/ | more

Ci dovrebbe essere un .bashrcnella prima pagina. Se non semplicemente crearlo con

vi ~/.bashrc

E semplicemente scrivi la seguente riga in esso.

PATH=$PATH:~/bin

OPPURE La maggior parte delle distribuzioni mantiene un .bashrcfile standard in /etc/skel/È possibile copiarlo nella directory principale.

$cp /etc/skel/.bashrc ~

OK, lo capisco adesso. Su altri computer, posso digitare lego e il software si avvia. Sul mio sistema, la cartella lego è nella mia ~/data/user1/bincartella. Ho aggiunto questo percorso al file .bashrc. Ora cosa devo fare in modo che quando digito lego, dovrebbe avviare il software? Devo impostare un alias? Se si, come? alias lego='<What do i put here???>'

@detraveller Hai aggiunto la ~/data/user1/bintua variabile d'ambiente PATH nel .bashrcfile? (aggiungi questa riga:) export PATH=$PATH:~/data/user1/bin- in tal caso, dovresti essere in grado di digitare semplicemente legoil terminale e il programma dovrebbe avviarsi.
Acid

Ho solo aggiunto PATH=$PATH:~/data/user1/bin. Non hai menzionato l'esportazione, quindi non l'ho messo lì. Ci riproverò domani quando andrò a Uni.
detraveller

Ma mi chiedevo come posso dire a bash che legoè la parola che avvia il software?
detraveller

11

La maggior parte delle distribuzioni .bashrccontiene un file standard /etc/skel/che puoi semplicemente copiare nella tua home directory . Altrimenti potresti semplicemente creare un nuovo .bashrcfile vuoto nella tua home directory.


4

Crea il tuo file di avvio per le shell interattive

Informazioni sui file di avvio di Bash

Dalla sezione INVOCATION di man 1 bashdice:

Quando viene avviata una shell interattiva che non è una shell di accesso, bash legge ed esegue i comandi da /etc/bash.bashrc e ~ / .bashrc, se questi file esistono.

Si noti che questi file di avvio sono opzionali ; Bash non li richiede. Bash distingue anche tra shell di login e shell interattive. Una shell interattiva è così definita:

Una shell interattiva è una avviata senza argomenti non opzionali e senza l'opzione -c i cui input ed errori standard sono entrambi collegati ai terminali (come determinato da isatty (3)), oppure uno avviato con l'opzione -i.

Molte distribuzioni generano un tipo di file di avvio dall'altro, ma alcuni no, quindi questo problema può essere difficile da affrontare in modo canonico. È necessario esaminare tutti i file di avvio per vedere come e quando il vostro ~/.bashrcsarà richiamato sul vostro sistema.

Creazione del file di avvio della shell interattiva per utente

Se ti manca semplicemente un ~/.bashrcfile specifico dell'utente, creane uno. Questo verrà invocato da Bash per shell non di accesso (ad es. --loginShell avviate senza flag) o ogni volta che si forza l'interazione della shell invocandola con il -iflag.


0

Se non ne hai uno .bashrc, puoi semplicemente crearne uno e aggiungere le linee che desideri, come ad esempio:

PATH=$PATH:~/bin

per aggiungere la directory bin dell'utente alla fine del percorso.

Ma dovresti stare attento se ci sono altri file di avvio. Le regole su quali file vengono utilizzati sono piuttosto complesse, ma sono dettagliate nella bashpagina man. Immettere man bashda una riga di comando e cercare INVOCATION.


0

Risposte brevi:

  1. find ~ -maxdepth 1 -name '.bashrc'
  2. vi ~/.bashrc
  3. echo $PATH | grep ~/MyNewCoolProgramFolder

Uno dettagliato:
prendo un'interpretazione letterale più stretta.

  1. "Trova il file .bashrc nella tua home directory"
    Dato che esiste il comandofind, forse l' editore infido ti consiglierebbe di usarlo:

    find ~ -maxdepth 1 -name '.bashrc'

    Cerca nella home directory ~, scendi solo di un livello (senza sottodir -maxdepth 1). Per tutte le opzioni scrivi man find.
    La riga sotto la farà il lavoro minimo

    ls ~/.bashrc   

    Nota: nel caso in cui ~/.bashrcnon esista è possibile crearlo con un semplice echo >> ~/.bashrc.

    La >>creerà il file se non esiste. Se ~/.bashrcinvece esiste, aggiungerà solo l'output innocuo di vuoto echo, evitando una cancellazione involontaria di un file così critico, che è per inciso difficile da ripristinare senza un backup.

    (Quanto segue è perché raramente devo onorare il significato del mio soprannome, non eseguire in caso di dubbio).

    if [ ! -f ~/.bashrc ] ; 
      then
         cp -i /etc/skel/.bashrc ~/.bashrc ;
      else ls -la ~/.bashrc; 
    fi || echo " # Auto Generated " >> ~/.bashrc
  2. "Fai vi .bashrc"
    Ora puoi farlovi ~/.bashrc, la trappola qui è che devi premere:edquscire!

  3. Cartella dell'applicazione e$PATH
    Quando si crea una cartella dell'applicazione, ad esempio~/MyNewCoolProgramFolder, la riga in basso verifica solo se si trova in$PATH:

    echo $PATH | grep ~/MyNewCoolProgramFolder

    Non è necessario aggiungere se è già lì. Se necessario, è possibile aggiungere al $PATHcon

    PATH=$PATH:~/MyNewCoolProgramFolder

    e aggiungere quella linea a ~/.bashrcse vuoi renderla permanente.

  4. "4?!? Come 4 se ci fossero solo 3 punti?" - Soluzioni alternative.
    Ci sono alcune soluzioni alternative per quest'ultimo; supponiamo che un file eseguibile chiamatoCoolDetravelleresista solo nella tua nuova cartella dell'applicazione:

    (a) Puoi provare a eseguirlo. Semplicemente non si avvierà se non è in $PATH.

    CoolDetraveller: comando non trovato

    (b) Puoi provare il suo completamento automatico . Inizia a scrivere CoolDetravellee premi Tab. Se è presente $PATH, verrà completato automaticamente (sempre se è abilitato il completamento automatico).

    (c) Puoi chiedere al whichcomando bash shell che verrà usato se scrivi il comando CoolDetraveller.

        which CoolDetraveller

    Nota: se nel percorso dell'applicazione sono presenti uno o più spazi, whichpotrebbe non essere possibile trovare CoolDetraveller, sebbene (qui onoro nuovamente il mio nickname) funzionerà il completamento automatico di CoolDetravellercome parametro valido del whichcomando!

    Annuncio nauseam : non puoi chiederewhereis CoolDetravellerperchéwhereis

    ha un percorso hardcoded, quindi potrebbe non trovare sempre quello che stai cercando

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.