Salvar o diretório atual na variável usando o Bash?

111

O que estou tentando fazer é encontrar o diretório de trabalho atual e salvá-lo em uma variável, para que eu possa executar export PATH=$PATH:currentdir+somethingelse. Não tenho certeza se eles têm uma variável que contém cwd por padrão.

Como faço para salvar o diretório atual na variável usando Bash?

Stupid.Fat.Cat
fonte
então, para salvá-lo em uma variável, eu faria mydir =. ?
Stupid.Fat.Cat
1
sim acabei de testar com mydir =. então ls $ mydir - mas é relativo, então será o pwd de onde quer que você o execute
mcalex
obrigado! vamos esperar que funcione para mim
Stupid.Fat.Cat
Oh, eu tinha alguns espaços. tt $ {PWD} deveria ter funcionado. haha. ...
opa

Respostas:

189

Isso salva o caminho absoluto do diretório de trabalho atual para a variável cwd:

cwd=$(pwd)

No seu caso, você pode apenas fazer:

export PATH=$PATH:$(pwd)+somethingelse
Sampson-Chen
fonte
1
por algum motivo, se eu mudar para outro diretório, isso também atualizará a cwdvariável. Como se ele estivesse chamando a pwdfunção toda vez ... dpaste.de/Kn7F Como posso evitar isso?
tutuca
1
$CWDpode ser uma variável de ambiente especial (reservada) em seu shell. Em vez disso, tente um nome diferente, como$CWD_MY_VAR
sampson-chen
Usar backticks faz o mesmo.
tutuca
1
Por que não apenas usar "$PWD"?
leetbacoon
28

Eu tenho o seguinte em meu .bash_profile:

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

então, sempre que eu quiser lembrar de um diretório, posso apenas digitar, por exemplo, marcar lá .

Então, quando eu quero voltar para aquele local, eu apenas digito cd $ lá

Gerardw
fonte
Funciona bem, mas para caminhos com espaços, por exemplo, "Google Drive", você deve fazer cd "$foo"para que todo o caminho seja lido
mercergeoinfo
3
Para contornar o problema com espaços no caminho, mude export $1=`pwd` para export $1="`pwd`" e, ao chamar tais caminhos, use em cd "$foo"vez de apenascd $foo
mercergeoinfo
mercergeoinfo: Estritamente falando, as aspas in export $1="`pwd`"não são necessárias, uma vez que a divisão de palavras não acontece no lado direito de uma tarefa, embora seja bom se acostumar com citações de expansões.
Larry
2
Veja também cdable_varspara digitar apenascd there
John Cummings
4

Sua tarefa tem um extra $:

export PATH=$PATH:${PWD}:/foo/bar
chepner
fonte
3

para uma resposta relativa , use.

teste com:

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

O primeiro lsmostrará tudo no diretório atual, o segundo mostrará tudo no diretório raiz ( /).

mcalex
fonte
1

variável do diretório de trabalho atual, ou seja, caminho completo / home / dev / outro

dir=$PWD

imprimir o caminho completo

echo $dir
Piyush Sharma
fonte
0

Mais uma variante:

export PATH=$PATH:\`pwd`:/foo/bar
tema
fonte
0

Você pode usar a variável interna do shell PWD, como esta:

export PATH=$PATH:$PWD+somethingelse
simmerlee
fonte