Comandos básicos não estão funcionando, ou seja: -bash: ls: esse arquivo ou diretório não existe

8

Eu sou novo no Unix e, no processo de instalação de um programa para a minha dissertação, devo ter brincado com o PATH nos comandos básicos do Unix, como ls. Sempre que digito lse o nome do diretório para o qual desejo listar os arquivos, ele aparece como:

-bash: ls: No such file or directory

Oque posso fazer para consertar isso? Qualquer ajuda é muito apreciada!

Mariaa
fonte
Será que o ls razão para não trabalhar, mas cd isso documentado na minha resposta
Michael Durrant

Respostas:

23

Redefina seu caminho agora (ou seja, antes de qualquer tipo de logout) com:

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

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

Aqui está um exemplo do tipo de coisa que acontece:

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 usou acidentalmente

PATH=PATH:other_dir

ao invés de

PATH=$PATH:other_dir

e o resultado foi que seu caminho se tornou

PATH:other_dir

e então todos os utilitários como sl 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

o que é particularmente útil se um arquivo de ponto de login estiver atrapalhando o seu PATH
Verifique os arquivos .bashrc e / ou .bash_profile quanto a alterações no PATH.

Como 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 quebrada!) E, em seguida, ecoar $ PATH a partir de uma nova janela.

O mesmo acontece quando você faz path=sem valores. 'Limpa' o caminho atual e causa esses problemas.

Quanto ao porquê , quando você tem esses problemas, o cd funciona e o ls não funciona:

  • cd é um comando "interno" que não precisa do seu PATH para encontrar o programa
  • ls é um programa e precisa usar o PATH para descobrir onde 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 está embutido

Antes de 'seguir em frente' (ou sair) ...

Certifique-se de testar quaisquer alterações ( particularmente as que estão em .bashrc, .profile, etc que estão executando os comandos de configuração PATH) abrindo uma nova janela ou executando o código fonte ~ / .bash_profile para executá-la. Também é uma boa prática manter a janela e o editor (quando você estiver alterando o arquivo .bash_profile) abertos, caso suas alterações não funcionem e impedir que você abra novas janelas para editar o arquivo. Embora você ainda possa usar o TextEdit ou outro editor simples para alterar o arquivo (evitando a linha de comando e vi, por exemplo). Cuidado para NÃO reiniciar se / quando o seu shell estiver quebrado ou você não conseguir fazer o login. e isso é realmente muito ruim (sem outra conta para suvocê receber uma mangueira). Já aconteceu comigo!

Minha correção de 'conta extra' também foi um salva-vidas e, no entanto, é altamente recomendável para todos (faça isso agora!)

Michael Durrant
fonte
Ei! Muito obrigado! Acabei de redefinir o caminho, mas quando abro uma nova janela do terminal, acontece o mesmo. Então fiz mais ~ / .bash_profile para verificar se há alterações e isso mostra o seguinte: export PATH =
Mariaa 12/14
Isso é normal?
Mariaa
Além disso, quando eu echo $ PATH fico sem results..not certeza se isso é normal ou não
Mariaa
@Mariaa, como redefinir o caminho, informe o arquivo ou comando.
jgr208
1
Teste as alterações abrindo uma nova janela ou executando- source ~/.bash_profilea. Também é uma boa prática manter a janela e o editor (onde você está alterando o arquivo .bash_profile) abertos, caso as alterações não funcionem e impedir que você abra novas janelas para editar o arquivo. Embora você ainda possa usar o TextEdit ou outro editor simples para alterar o arquivo.
Michael Durrant
8

As alterações que você fez PATHsão provavelmente temporárias. Feche o shell com o qual você está exite reabra-o.

No caso de você ter editado um arquivo que define os PATHshells recém-abertos, especifique o caminho completo dos comandos para corrigir o que você alterou (por exemplo, /usr/bin/vim).

Greg Hewgill
fonte
Olá! Obrigado (: tentei fazer isso, mas não funciona. Acho que realmente fiz algo estranho. Lembro-me de usar o vim para fazer algo com PATH e tudo ficou confuso. Ugh, gostaria de saber mais linguagem de computador para resolver esse problema!
Mariaa 12/04
existe /usr/binalgum bindiretório no seu caminho? @Mariaa
jgr208 12/11
jgr208: este é o meu caminho: / usr / local / sbin: / usr / / bin local: / usr / sbin: / usr / bin: / sbin: / bin
Mariaa
@ Maria você não excluiu bin ou qualquer coisa e você tem acesso de leitura aos arquivos corretos?
jgr208
No entanto, só consigo ver isso ou usar qualquer comando quando insiro PATH = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin isso em um novo terminal janela .. caso contrário, não posso usar nenhum dos comandos. Não é reconhecê-los: S
Mariaa 12/12/14