Capire come funzionano i percorsi è una parte piuttosto importante del lavoro con la riga di comando su qualsiasi sistema Linux/BSD/Unix. La variabile d'ambiente PATH dice al sistema dove cercare i comandi. È un elenco di percorsi delimitato da due punti. Nel caso di Weewx, ci sono in genere due percorsi che contano di più: il percorso del comando e il percorso del file di configurazione weewx.conf.
Iniziamo con un'operazione di base di Weewx: eseguirlo direttamente. Come spiegato nella guida per l'utente, questo significa invocare il demone weewx, weewxd, con un file di configurazione weewx.conf. Nella sua forma più generale, assomiglia a questo:
weewxd weewx.conf
Tuttavia, le specifiche su come inserirlo effettivamente dipendono da come e dove è stato installato Weewx.
INSTALLAZIONI CON SETUP.PY
Ad esempio, se Weewx è stato installato utilizzando setup.py nella posizione predefinita /home/weewx, i seguenti comandi sono equivalenti:
/home/weewx/bin/weewxd /home/weewx/weewx.conf
O
cd /home/weewx ./bin/weewxd weewx.conf
Il primo esempio utilizza un percorso esplicito e assoluto sia per weewxd che per weewx.conf, quindi può essere eseguito da qualsiasi directory.
Il secondo esempio mostra un cd (cambia directory) alla directory in cui è stato installato Weewx ( /home/weewx), seguito da percorsi relativi sia a weewxd che a weewx.conf. L'uso di ./ in ./bin/weewxd potrebbe non essere necessario per un utente non root, ma è tipicamente necessario per un utente root. Questo perché la directory corrente ( .) di solito non è nella PATH per l'utente root.
Quello che non funzionerà è questo:
cd /home/weewx/bin weewxd ../weewx.conf
Il motivo è semplice: per impostazione predefinita, la "directory corrente" non è inclusa nel tuo file PATH. Il motivo è evitare di eseguire accidentalmente una versione dannosa di un programma comune come ls o mv. Invece, devi includere in modo esplicito la directory corrente quando invochi il programma. Quindi, questo funzionerà:
cd /home/weewx/bin
./weewxd ../weewx.conf
INSTALLAZIONI CON DEB O RPM
Consideriamo ora il caso in cui Weewx sia stato installato da un pacchetto .deb o .rpm. In questo caso i comandi sono equivalenti:
/usr/share/weewx/weewxd /etc/weewx/weewx.conf
cd /usr/share/weewx ./weewxd /etc/weewx/weewx.conf
weewxd /etc/weewx/weewx.conf
Il primo esempio usa un percorso esplicito e assoluto per entrambi weewxd e weewx.conf.
Il secondo esempio mostra un cd (cambia directory) alla directory in cui sono installati i componenti Weewx, seguito da un percorso relativo a weewxd e da un percorso assoluto a weewx.conf. Il percorso assoluto è necessario poiché weewx.conf non è nella gerarchia della directory /usr/share/weewx.
Il terzo esempio illustra una caratteristica speciale di un'installazione .deb o .rpm. C'è un collegamento simbolico /usr/bin/weewxd che punta all'eseguibile effettivo /usr/share/weewx/weewxd. Poiché /usr/bin si trova nella PATH variabile di ambiente, si può semplicemente digitare weewxd invece del percorso completo /usr/bin/weewxd e, poiché si tratta di un collegamento simbolico, esegue l'effettivo weewxd in /usr/share/weewx/weewxd.
ALTRI COMANDI IN WEEWX
Altri comandi in Weewx usano uno schema simile. Ad esempio, il comando wee_config_device viene utilizzato per visualizzare e modificare le opzioni nell'hardware. Oltre a richiedere un file di configurazione, riconosce anche molte opzioni, come --info o --help. La descrizione generica è simile a questa:
wee_device /path/to/weewx.conf --help
Per un'installazione setup.py, questo sarebbe:
/home/weewx/bin/wee_device /home/weewx/weewx.conf --help
Per un'installazione .deb o .rpm, questo sarebbe:
/usr/share/weewx/wee_device /etc/weewx/weewx.conf --help
o, ancora più sinteticamente:
wee_device --help
La forma finale è possibile perchè i comandi wee_* cercheranno nelle posizioni standard /etc/weewx/weewx.conf e /home/weewx/weewx.conf, se non è specificato alcun file di configurazione.
PRIVILEGI
Sui sistemi più moderni, la PATH per l'utente root non include . (la directory corrente). Questo per evitare errori come l'esecuzione di un programma nella directory corrente quando intendevi eseguire un programma di sistema con lo stesso nome.
Di conseguenza, se vuoi davvero eseguire qualcosa nella directory corrente, con privilegi elevati, allora devi eseguire qualcosa del genere:
sudo ./setup.py
invece di questo:
sudo setup.py