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?


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

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á


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

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 ( /).


1

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

dir=$PWD

imprimir o caminho completo

echo $dir

0

Mais uma variante:

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

0

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

export PATH=$PATH:$PWD+somethingelse
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.