Modificare temporaneamente PATH

code on

OOPS!!! post aggiornato, vedi in fondo.

Nel post di ieri mi sono trovato improvvisamente in una situazione di OK, panic now!
Cosa che è sempre sbagliata, a prescindere, come direbbe Totò. Ma forse è meglio che vi racconti tutto; la storia è breve, anzi questo è un minipost.

Linux, checché se ne dica, è semplice e amichevole, potrei citare Dennis, anzi ecco:

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.

Qui, con tante altre.

Dunque, Linux è amichevole ma bisogna saperlo usare. E la mia memoria a volte… come ieri. Alla fine ho lasciato perdere ma ho preso un appunto, inutile perché continuo a pensarci senza volerlo.

Il problema è semplice: se avete uno script o un eseguibile da lanciare da terminale riuscite a eseguirlo solo se è in una directory presente nella variabile PATH.

p0

Manca la directory corrente, cosa non grave basta scrivere ./ prima del nome dello script. Vediamo un esempio pratico che viene tutto più semplice.
Ecco lo script hw.py:

#!/usr/bin/python3

import os

print("ciao", os.getenv("USER") + "!\n")

hw.py

Nella directory corrente lo si può attivare e eseguire, così:

p2

Ma se ci spostiamo in un’altra directory il comando diventa lungo:

p3

Vero che basta digitare le prime lettere di ogni sub-dir e usare il tasto Tab (la prima volta poi c’è l’history) ma è comunque una noia. Si può modificare la PATH, temporaneamente, aggiungendo la dir corrente, quella che ottieni con pwd? Certo! adesso vi faccio vedere come.
A dirla tutta ho pasticciato un pochino poi sono andato su Stack Overflow, non sapevo che esiste la variabile d’ambiente PWD.
In poche parole tutto quello che devo fare è export PATH=$PWD:$PATH, così:

p4

che rende facile il richiamo dello script dovunque:

p5

E, naturalmente è temporaneo, vale per la sessione e sparisce quando chiudi il terminale. OK?
Ma aspetta, il comando è lungo, casinato, con lettere maiuscole…
Non sono riuscito completamente, anche se mi ci sono avvicinato. Creo lo script agpa (da aggiungi a PATH), questo:

#!/bin/bash
export PATH=$PWD:$PATH
echo $PATH

e posso eseguirlo con source.

p6
source
si rende necessario per esportare la modifica della variabile che altrimenti vive solo all’interno dello script. Praticamente agpa può essere spostato in ~/bin e lanciato così:

p7

vedi sotto; più semplice

In alternativa, ancora meglio, rinominarlo .agpa, spostarlo nella propria home e lanciarlo con source ~/.agpa.

Aggiornamento: conviene spostarlo in ~/bin e si può quindi lanciare semplicemente con source agpa, così:

p8

Naturalmente se qualcuno ha una soluzione migliore benvenuto 😀

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • Timothy  Il 14 luglio 2014 alle 16:22

    L’idea è buona, ma io avrei messo un alias in .bashrc o .bash_profile.

    Del tipo:
    alias agpa=’export PATH=”$PWD:$PATH” && echo “$PATH”‘

    Così si evita di avere uno script inutile in giro per il sistema ed è anche più veloce come esecuzione

    • juhan  Il 14 luglio 2014 alle 19:18

      Sì, può essere una soluzione se prevedi di usare spesso questo comando. Altrimenti resta un file in ~/bin, dove ce ne sono tanti, almeno da me.

Trackback

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: