2011-06-21 10:31:01 +0000 2011-06-21 10:31:01 +0000
37
37

Que comando na shell sh do Linux/UNIX devolve o meu directório actual?

Usando o sh shell (não bash), que comando em Linux/UNIX imprime o meu directório actual?

$ *showmewhereiam*
/sys/kernel/debug
$

Respostas (4)

60
60
60
2011-06-21 10:32:09 +0000

Experimente pwd.

$ pwd
/home/<username>
```.
11
11
11
2011-06-21 12:48:02 +0000

Embora a resposta geral seja pwd, note que isto pode dar resultados diferentes, dependendo de como se chegou a um determinado directório, e se a rota incluiu ligações simbólicas.

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

Para mostrar o verdadeiro directório subjacente, 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

Note que os shells substituem frequentemente o comando pwd pela sua própria versão interna, por isso no meu sistema (RHEL6), embora a página do manual pwd(1) sugira que --physical funcionará tão bem como -P, porque estou a correr bash, não funciona:

$ 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
1
1
1
2017-02-20 09:13:21 +0000
$ pwd
/your/current/directory
$

pwd provém do directório de trabalho de impressão*.

da página de manual do Linux:

Nome

pwd* - nome de impressão do directório de trabalho/corrente

Sinopse

pwd [OPÇÃO]…

& > # Descrição & > Imprimir o nome completo do directório de trabalho actual.

-L , –lógico

usar PWD do ambiente, mesmo que contenha links simbólicos

-P , –físico

evitar todas as ligações simbólicas & > –ajuda*

mostrar esta ajuda e sair & > –versão

informação da versão de saída e sair & > NOTA: a sua concha pode ter a sua própria versão de pwd, que normalmente substitui a versão aqui descrita. Consulte a documentação da sua concha para obter detalhes sobre as opções que suporta.

(…)

1
1
1
2011-06-21 13:24:23 +0000

Como outros disseram, pwd normalmente faz o trabalho suficientemente bem. Contudo, gostaria de acrescentar uma ideia que me tem ajudado.

Em todas as conchas em uso comum hoje em dia, é possível personalizar o aspecto do prompt de comando. Gosto de personalizar o meu para que me mostre tanto o nome do computador em que estou como o meu directório de trabalho. Dessa forma, sei sempre onde estou. (A parte do nome do computador ajuda-me a perceber se a janela do terminal que estou a utilizar foi utilizada para SSH num servidor remoto). Por exemplo, quando abro uma nova janela de terminal no meu portátil, a que chamo Plastico, vejo isto:

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

Vê-se que está a abreviar o meu directório home como ~. Acho que fazer isto para os meus avisos terminais é incrivelmente útil - sei sempre num relance exactamente onde estou, ainda mais do que o faria olhando para uma janela do Finder.

Em tcsh, faço isto adicionando set prompt = 'Plastico %~%# ' ao meu ficheiro .tcshrc no meu directório home. Fi-lo também no ksh adicionando export PS1="Plastico $PWD $ " ao meu ficheiro .profile. Mas sendo um utilizador de Linux, provavelmente usa o Bash, com o qual não tenho muita experiência (sou um esquisito como esse). Mas parece talvez o possa fazer adicionando PS1="Plastico \w $ " ao meu ficheiro .bashrc.

Editar: Acabei de notar que o OP afirma que está interessado em sh, não em bash. Oh bem; espero que as pessoas achem isto útil independentemente disso.