Perché il gestore delle versioni dei nodi è stato installato su ~ / .nvm invece che su ~ / nvm e che cosa è "sourcing" in Linux?


1

Mi stavo chiedendo di un semplice evento che si è verificato mentre stavo installando node version manager sul mio web server Amazon Linux 2014.09 a 64 bit. Quando ho eseguito questo script di installazione

curl https://raw.githubusercontent.com/creationix/nvm/v0.23.3/install.sh | bash

NVM installato sul mio filesystem in ~ / .nvm /

Qual è il significato di ~ / .nvm rispetto a ~ / nvm? In particolare, cosa fa il '. 'significa prima di nvm?

Questo è particolarmente importante perché quando eseguo "ll" nella cartella ~ /, non vedo alcun file. Tuttavia, quando eseguo cd ~ / .nvm, vengo indirizzato alla cartella ~ / .nvm.

Inoltre, per far funzionare nvm nel terminale, ho dovuto "generare" il file nvm.sh in questo modo

source ~/.nvm/nvm.sh

Che cosa ha ottenuto questo comando sorgente?

Nota: tutto funziona, questa è solo una curiosità che vorrei capire meglio per farmi sentire più a mio agio con le configurazioni del server, ecc.

Grazie mille!

Risposte:


3

Il personaggio . all'inizio del nome del file lo rende nascosto .
Per vedere un file nascosto da shell puoi fare ls -a (o ls -A ).

Nota le differenze:

 .myfile.sh       # hidden file
 .   myfile.sh    # source the file myfile.sh

source (o . ) sono il comando interno di bash. Puoi avere accesso alla loro definizione con help.

Con il comando type puoi capire se un comando è una shell integrata o no.

Per esempio. il comando type source /bin/ls risponderà

la fonte è una shell incorporata
/ bin / ls è / bin / ls

Quindi è possibile chiedere al sistema informazioni sui comandi rispettivamente con help o man.


A partire dal help source Puoi leggere

fonte: fonte nome file [argomenti]
Esegui comandi da un file nella shell corrente.     Leggi ed esegui i comandi da FILENAME nella shell corrente. Il     le voci in $ PATH vengono utilizzate per trovare la directory contenente FILENAME.     Se vengono forniti ARGUMENTI, diventano i parametri posizionali     quando viene eseguito FILENAME.

A partire dal man ls

-a, --tutti
non ignorare le voci che iniziano con .


Esiste un comando per rendere un file non nascosto oltre a "cp -Rf ~ / .file / ~ / file /? Un file nascosto / non nascosto avrà effetto sulla sua funzionalità?
deusofnull

Non ho capito pienamente. Se fate cp -Rf ~/.file/ ~/file/ copierai la directory chiamata .file e tutte le sottodirectory nascoste o meno nella directory chiamata file se esiste, altrimenti a casa tua ( ~ ). Invece se file è un file che riceverai come risposta a un errore cp: impossible .... .file/ is not a directory
Hastur

Sì, il file era solo un segnaposto. In questo caso, il comando sarebbe cp -Rf ~/.nvm/ ~/nvm/ Questo cambierebbe la funzionalità di nvm se si "sorgente" dopo questa mossa?
deusofnull

Circa l'azione della fonte, dagli un'occhiata a questo . A source è come eseguire tutto lo script mentre stavi scrivendo i comandi nella shell presente. La tua domanda dovrebbe essere: cosa succederà se cambio il nome in cui è installato uno script? ;) La risposta è dipende dalla sceneggiatura. È possibile che tu abbia un problema. Non posso saperlo da qui, ma per esempio ogni chiamata con percorso assoluto lo cercherà ~/.nvm/whateverelse... e non nella tua nuova directory ~/nvm/whateverelse.
Hastur

Grazie per il link! Quindi è probabilmente meglio lasciarlo nel file nascosto ... Sei rock
deusofnull
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.