Cd (comando)

cd, também conhecido por chdir, é um comando implementado em interfaces de linha de comandos de diversos sistemas operacionais (Unix ou qualquer um do tipo Unix, DOS, Windows, OS/2 e AmigaOS). Seu nome é um acrônimo da expressão inglesa change directory ("mudar diretório") e sua finalidade é, como sugere seu nome, mudar o diretório atual de trabalho (isto é, o diretório em que se está) para uma outra especificada.

No Unix e nos sistemas operacionais do tipo Unix, chdir(2) é a chamada de sistema responsável por mudar o diretório atual de trabalho,[1] como definido pelo padrão POSIX.

Uso

Um usuário pode estar trabalhando no seu diretório "home" e este possuir os sub-diretórios "games" e "fotos". Eis um exemplo de mudança de diretórios através do comando cd:

  me@host:~$ cd games
  me@host:~/games$ cd ../fotos
  me@host:~/fotos$

A segunda linha do exemplo nos leva para o diretório pai (no caso o "home") e em seguida para o diretório "fotos". Outros modos de usar o comando cd:

  cd        entra num diretório (exemplo: cd docs) ou retorna para HOME se usado sem argumentos
  cd ~      vai direto para o diretório home do usuário logado.
  cd -      volta ao último diretório acessado
  cd \     entra no diretório root

Implementação

cd é um comando frequentemente implementado no próprio interpretador de comandos, ou seja, não é uma extensão mas sim um comando nativo da própria interface de linha de comandos. Este é o caso da maioria dos shells para sistemas Unix (Bourne shell, tcsh, bash etc.), cmd.exe e Windows PowerShell no Windows e COMMAND.COM no DOS.

Enquanto nos sistemas Unix é usada a função chdir(), escrita em C e especificada pelo padrão POSIX, no Windows a interface de linha de comandos utiliza a WinAPI para mudar o diretório atual de trabalho. Isto significa que quando o comando é executado, nenhum novo processo é criado para alternar para o diretório especificado, que é o caso de outros comandos tais como o ls por exemplo. Em vez disso, a própria interface de linha de comandos executa o comando. Isto porque, quando um novo processo é criado, o processo-filho herda o diretório no qual o processo-pai foi criado. E, uma vez que o comando cd herdasse o diretório do processo-pai, seu objetivo jamais seria alcançado.

Ao contrário do que faz a WinAPI ou a função C no POSIX, nem a linguagem Java nem a Máquina Virtual Java oferecem suporte a chdir diretamente. Uma requisição de alteração permaneceu em aberto por mais de uma década enquanto a equipe responsável pelo Java considerava alternativas, contudo o pedido foi negado em 2008 e apenas um suporte limitado foi introduzido (afetando primeiramente java.lang.Runtime e posteriormente java.lang.ProcessBuilder).[2]

O Windows PowerShell, shell de linha de comandos orientado-a-objetos e linguagem de script, executa o comando cd (cmdlet) dentro do processo do shell. Na verdade, tendo em vista que o PowerShell é baseado na plataforma Microsoft .NET e que possui uma arquitetura diferente de shells anteriores, todos os cmdlets tais como ls, rm etc. correm no processo do shell.

Ver também

Referências

  1. The Open Group Base Specifications Issue 6 and IEEE Std 1003.1, 2004 Edition (em inglês)
  2. «Java - Bug ID: 4045688». Bug Database (em inglês). Sun Microsystems. 17 de abril de 1997. Consultado em 20 de fevereiro de 2011 

Ligações externas