Que comando no shell sh de Linux / UNIX retorna meu diretório atual?

37

Usando o shell sh (não bash ), qual comando no Linux / UNIX imprime meu diretório atual?

$ *showmewhereiam*
/sys/kernel/debug
$
    
por Hieu M. Nguyen 21.06.2011 / 12:31

4 respostas

59

Experimente pwd .

$ pwd
/home/<username>
    
por 21.06.2011 / 12:32
10

Embora a resposta geral seja pwd , observe que isso pode dar resultados diferentes dependendo de como você chegou a um determinado diretório e se a rota incluiu links simbólicos.

Por exemplo, se você tiver um diretório chamado real e um link simbólico para esse diretório chamado virtual e você cd para o diretório virtual , então pwd mostrará esse diretório virtual nome, mesmo que o diretório em que você está seja real .

Para mostrar o diretório subjacente real, use pwd -P ou readlink -f (para um caminho arbitrário):

$ mkdir real
$ ln -s real virtual
$ cd virtual
$ pwd
/home/username/tmp/virtual
$ pwd -P
/home/username/tmp/real
$ readlink -f .
/home/username/tmp/real

Observe que os shells geralmente substituem o comando pwd por sua própria versão interna, portanto no meu sistema (RHEL6), embora a página de manual pwd(1) sugira que --physical funcionará tão bem quanto -P , porque Estou executando bash , isso não acontece:

$ pwd --physical
bash: pwd: --: invalid option
pwd: usage: pwd [-LP]
$ /bin/pwd --physical
/home/username/tmp/real
$ /usr/bin/env pwd --physical
/home/username/tmp/real
    
por 21.06.2011 / 14:48
1

Como outros disseram, pwd normalmente faz o trabalho bem o suficiente. No entanto, gostaria de acrescentar uma ideia que me tenha ajudado.

Em todos os shells comuns atualmente, você pode personalizar a aparência do prompt de comando. Eu gosto de personalizar o meu para que ele me mostre o nome do computador em que estou e meu diretório de trabalho. Dessa forma, eu sempre sei onde estou. (A parte do nome do computador me ajuda a perceber se a janela do terminal que estou usando foi usada para o SSH em um servidor remoto.) Por exemplo, quando abro uma nova janela de terminal no meu laptop, que eu chamo de Plastico, vejo isto:

Plastico ~> cd Desktop/
Plastico ~/Desktop> cd ~/Sites/raygunrobot.com
Plastico ~/Sites/raygunrobot.com> cd /usr
Plastico /usr> 

Você pode ver que está abreviando meu diretório pessoal como ~ . Acho que fazer isso para os meus prompts de terminal é incrivelmente útil - eu sempre sei exatamente onde estou, mais ainda do que olhando uma janela do Finder.

No tcsh, faço isso adicionando set prompt = 'Plastico %~%# ' ao meu arquivo .tcshrc no meu diretório pessoal. Eu fiz isso no ksh também adicionando export PS1="Plastico $PWD $ " ao meu arquivo .profile. Mas sendo um usuário do Linux, você provavelmente usa o Bash, o qual eu não tenho muita experiência (eu sou um esquisito assim). Mas parece que eu posso ser capaz de fazer isso adicionando PS1="Plastico \w $ " ao meu arquivo .bashrc.

Editar: Apenas percebi que o OP indica que você está interessado em sh, não em bash. Ah bem; espero que as pessoas achem isso útil independentemente.

    
por 21.06.2011 / 15:24
0
$ pwd
/your/current/directory
$

pwd vem do diretório de trabalho de impressão .

Da página de manual do Linux:

Name

pwd - print name of current/working directory

Synopsis

pwd [OPTION]...

Description

Print the full filename of the current working directory.

-L, --logical

use PWD from environment, even if it contains symlinks

-P, --physical

avoid all symlinks

--help

display this help and exit

--version

output version information and exit

NOTE: your shell may have its own version of pwd, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.

(...)

    
por 20.02.2017 / 10:13

Tags