Ho uno script bash che funziona con percorsi relativi. Deve avere una directory di lavoro uguale alla directory in cui è archiviato lo script. Funziona bene fintanto che lo avvio dal prompt, perché posso prima fare cd nella directory dello script. Tuttavia, quando creo un collegamento simbolico allo script in /etc/cron.hourly, lo script si interrompe.
Ho bisogno di un modo per modificare la directory dello script bash nella directory in cui è archiviato lo script. Tuttavia, finora non ho avuto successo. C'è un modo semplice per farlo, anche se lo script viene chiamato da cron tramite un collegamento simbolico?
Risposta accettata:
Dovresti essere in grado di farlo.
- Il parametro $0 si espande al percorso completo (incluso il nome) dello script così come è stato invocato.
- La funzione di shell incorporata test (o [ ] ) può verificare se un percorso è un collegamento simbolico usando -L
ls -l
, se applicato a un collegamento simbolico, darà una singola riga di output con il vero percorso come campo finale.
Questo è abbastanza per scoprire la posizione della fonte. Naturalmente, potrebbe essere un collegamento simbolico, che richiederebbe di farlo in modo ricorsivo...