Como o comando cd funciona? (unix) [fechado]

6

Alguém poderia me explicar como funciona o comando cd - ? cd homem me diz que An argument of - is equivalent to $OLDPWD. Então eu encontrei na net que $ OLDPWD é o diretório de trabalho anterior, como definido pelo comando cd. E quando eu faço cd - no meu unix eu recebo -bash: cd: OLDPWD not set , o que é confuso para mim.

UPDATE: funciona agora e me fornece o diretório de trabalho anterior. Eu acho que não usei e cd comando antes, então é por isso que $ OLDPWD não foi definido.

Mais uma pergunta do que cd (digite cd e pressione enter)? Eu não diria isso nada. Existe alguma melhor explicação técnica?

host [~]# cd
host [~]#
    
por Radek 03.03.2010 / 10:29

3 respostas

10

OLDPWD não está definido porque você não alterou o diretório

[dave@odessa ~]$ cd -
-bash: cd: OLDPWD not set
[dave@odessa ~]$ cd /tmp
[dave@odessa tmp]$ cd -
/export/home/dave

[dave@odessa ~]$ cd /tmp
[dave@odessa tmp]$ echo $OLDPWD
/export/home/dave

cd sem argumentos chdir to $HOME

[dave@odessa tmp]$ echo $HOME
/export/home/dave
[dave@odessa tmp]$ HOME=/ cd
[dave@odessa /]$ pwd
/
    
por 03.03.2010 / 10:43
6
type cd

nos diz que

cd is a shell builtin

man sh

nos diz o que você descobriu:

If a single dash is specified as the argument, it will be replaced by the value of OLDPWD.

A implementação interna do cd no shell faz um chdir (2) -syscall.

    
por 03.03.2010 / 10:38
1

cd por si só muda para o seu diretório pessoal

$ cd /tmp
$ pwd
/tmp
$ cd
$ pwd
/home/username
    
por 03.03.2010 / 11:08