Comandos básicos no Unix não funcionam, por exemplo: -bash: ls: nenhum arquivo ou diretório

8

Sou novo no Unix e, no processo de instalação de um programa para minha dissertação, devo ter tocado com o PATH para os comandos básicos do Unix, como ls . Toda vez que eu digito ls e o nome do diretório para o qual quero listar os arquivos, ele aparece como:

-bash: ls: No such file or directory

O que posso fazer para corrigir isso? Qualquer ajuda é muito muito apreciada!

    
por Mariaa 12.11.2014 / 02:45

2 respostas

14

Redefina seu caminho agora com:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ele não restaurou o PATH completo, mas os utilitários básicos estarão disponíveis novamente.

Veja o que provavelmente aconteceu:

Você tinha uma variável PATH (referida como $ PATH ao ler a partir dela)

Algo como:

$ echo $PATH
/home/durrantm/.rvm/gems/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/durrantm/.rvm/rubies/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/bin:/h
ome/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:
/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/durrantm/.rvm/bin:/home/durrantm/.rvm/bin:/home/durrantm
/.rvm/bin

Você tentou adicionar, mas acidentalmente usou

PATH=PATH:other_dir

em vez de

PATH=$PATH:other_dir

e o resultado foi que seu caminho se tornou

PATH:other_dir

e, em seguida, todos os utilitários como ls e sed não funcionam

Você pode corrigir o conjunto mínimo fazendo

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

que é particularmente útil se um arquivo de ponto de login estiver bagunçando seu PATH
Verifique seus arquivos .bashrc e / ou .bash_profile para quaisquer alterações no PATH.

Como o Greg diz, você também pode simplesmente sair (ou opção mais segura, abrir uma nova janela caso a abertura de uma nova janela seja interrompida!) e então ecoar o $ PATH de uma nova janela.

Por que, quando você tem esses problemas, o cd funciona e o ls não funciona:

  • cd é um comando "embutido" que não precisa do seu PATH para encontrar o programa
  • O ls é um programa e precisa usar o PATH para descobrir onde ele está.

Você pode ver isso com:

$ builtin ls
-bash: builtin: ls: not a shell builtin
14:47:29 mdurrant C02MH2DQFD58 /Users/mdurrant
$ builtin cd
14:47:31 mdurrant C02MH2DQFD58 /Users/mdurrant
$

Nenhum erro significa que o comando é embutido

    
por 12.11.2014 / 03:35
8

As alterações feitas em PATH provavelmente são temporárias. Feche o shell em que você está com exit e reabra-o.

Caso você tenha editado um arquivo que defina o PATH para shells recém-abertas, especifique o caminho completo para os comandos para corrigir o que você alterou (por exemplo, /usr/bin/vim ).

    
por 12.11.2014 / 03:07