cd (comando)

Origem: Wikipédia, a enciclopédia livre.
(Redirecionado de Cd (Unix))

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

Referências[editar | editar código-fonte]

  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[editar | editar código-fonte]