Salvare la directory corrente nella variabile utilizzando Bash?


111

Quello che sto cercando di fare è trovare la directory di lavoro corrente e salvarla in una variabile, in modo da poterla eseguire export PATH=$PATH:currentdir+somethingelse. Non sono del tutto sicuro se hanno una variabile che contiene cwd per impostazione predefinita.

Come faccio a salvare la directory corrente nella variabile utilizzando Bash?


quindi per salvarlo in una variabile dovrei fare mydir =. ?
Stupid.Fat.Cat

1
sì, appena testato con mydir =. quindi ls $ mydir -ma è relativo quindi sarà il pwd da dove lo esegui
mcalex

Grazie! speriamo che
funzioni

Oh, avevo degli spazi. tt $ {PWD} avrebbe dovuto funzionare. haha. ... whoops
Stupid.Fat.Cat

Risposte:


189

Questo salva il percorso assoluto della directory di lavoro corrente nella variabile cwd:

cwd=$(pwd)

Nel tuo caso puoi semplicemente fare:

export PATH=$PATH:$(pwd)+somethingelse

1
per qualche motivo se cambio in un'altra directory, aggiorna anche la cwdvariabile. Come se chiamasse la pwdfunzione ogni volta ... dpaste.de/Kn7F Come posso evitarlo?
tutuca

1
$CWDpuò essere una variabile di ambiente speciale (riservata) nella shell. Prova invece un nome diverso, ad esempio$CWD_MY_VAR
sampson-chen

Usare i backtick fa lo stesso.
tutuca

1
Perché non basta usare "$PWD"?
leetbacoon

28

Ho quanto segue nel mio .bash_profile:

function mark {
    export $1=`pwd`;
}

quindi ogni volta che voglio ricordare una directory, posso semplicemente digitare, ad esempio contrassegnare lì .

Quindi, quando voglio tornare in quella posizione, digito cd $ lì


Funziona bene ma per i percorsi con spazi, ad esempio "Google Drive", devi fare cd "$foo"per leggere l'intero percorso
mercergeoinfo

3
Per aggirare il problema con gli spazi nel percorso cambia export $1=`pwd` in export $1="`pwd`" e quindi quando chiami tali percorsi usa cd "$foo"invece dicd $foo
mercergeoinfo

mercergeoinfo: A rigor di termini, le virgolette tra export $1="`pwd`"non sono necessarie, poiché la suddivisione delle parole non avviene sul lato destro di un compito, anche se la citazione di espansioni è utile per abituarsi.
Larry

2
Vedi anche cdable_varsper digitare solocd there
John Cummings

4

Il tuo incarico ha un extra $:

export PATH=$PATH:${PWD}:/foo/bar

3

per una risposta relativa , usa.

prova con:

$ myDir=.
$ ls $myDir
$ cd /
$ ls $myDir

Il primo lsti mostrerà tutto nella directory corrente, il secondo ti mostrerà tutto nella directory root ( /).


1

variabile della directory di lavoro corrente cioè percorso completo / home / dev / altro

dir=$PWD

stampare il percorso completo

echo $dir

0

Un'altra variante:

export PATH=$PATH:\`pwd`:/foo/bar

0

Puoi usare la variabile in-build della shell PWD, come questa:

export PATH=$PATH:$PWD+somethingelse
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.