Todo comando falha com "comando não encontrado" após alterar .bash_profile?


46

Eu estava atualizando meu .bash_profile e, infelizmente, fiz algumas atualizações e agora estou recebendo:

env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found
-bash: dirname: command not found
-bash: /preexec.sh.lib: No such file or directory
-bash: preexec_install: command not found
-bash: sed: command not found
-bash: git: command not found

Meu bash_profile realmente extrai outros arquivos .sh (origina-os), por isso não tenho certeza de qual modificação pode ter causado isso.

Agora, se eu tentar uma lista de arquivos, recebo:

>ls
-bash: ls: command not found
-bash: sed: command not found
-bash: git: command not found

Alguma dica sobre como rastrear a origem do erro e como poder usar o terminal para coisas básicas, como listar arquivos etc?


O que acontece se você usar o caminho completo da seguinte maneira: / bin / ls? E que tipo de mudanças você estava fazendo?
— KP MacGregor

2
Sim, colar seu .bash_profile
— janeiro

/ bin / ls lista os arquivos, mas então eu ver estas 2 linhas abaixo dela:-bash: sed: command not found -bash: git: command not found
— Blankman

No caso de seu problema /etc/environment, use o seguinte comando (no centos 6):ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
— Edenshaw

Respostas:


66

Parece-me que em um ponto ou outro você está substituindo a PATHvariável de ambiente padrão . O tipo de erro que você possui indica que PATHnão contém /binonde os comandos acima (incluindo bash) residem.

Por exemplo, se você fizer

PATH=/home/user/bin

ao invés de

PATH="$PATH":/home/user/bin

Eu fiz isso em um ponto:export PATH=PATH:EC2_HOME/bin
— Blankman

2
Você deve usar '$' na segunda string PATH - export PATH=$PATH:EC2_HOME/bin
— Manula Waidyanatha 12/12/12

estranho como 'ec2-descrevem-regiões' não funciona, mesmo estando no meu caminho, mas funciona: $ EC2_HOME / bin / ec2-descrevem-regiões Eu fiz uma fonte recarregar também ....
— Blankman

2
Olha, não sabemos o que você está fazendo, que outros arquivos você está procurando, o que está neles. E sim, toda vez que você origina o arquivo, anexa coisas ao seu caminho (o que é bom, porque normalmente .bash_profile será lido apenas uma vez). Passe por isso um por um e veja o que acontece. Além disso, EC2_HOME não é uma variável? Se sim, você deve precedê-lo da $seguinte forma:export PATH=$PATH:$EC2_HOME/bin
— janeiro

1
I perder a conta de quanta vezes eu stucked em que problema e quanto tempo esta resposta me ajudou muito
— Herrgott

21

Uma maneira de começar a depurar seu script bash seria iniciar um subshell com a opção -x:

$ bash --login -x

Isso mostrará todos os comandos e seus argumentos, que são executados ao iniciar esse shell.

A opção --login é especificada porque .bash_profile é lido pelos shells de login. Informações adicionais sobre a depuração de scripts bash podem ser encontradas aqui: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html .

Por fim, acho que a sugestão de janeiro funcionará para você, mas esse link vale a pena ser lido para problemas futuros.


conseguiu isto: -bash: bash: comando não encontrado
— Yassine Qoraiche 22/09

10

Eu posso ter encontrado o problema. Funcionou para mim e pode funcionar para você ...

Eu estava por padrão com meu editor para salvar no Windows (LF / CR). Desde que eu uso os dois sistemas, parecia lógico. Quando eu precisava mexer com a minha .bash_profile, eu percebi depois de comentar e tentar coisas que nada funcionava. Alterei minhas gravações para o formato OS X (somente CR) e pronto! Chega de "comando não encontrado" no terminal!

Pode ser tão fácil assim!


Coisa muito sutil que estava me deixando louco. Obrigado por adicionar esta resposta!
— Samuel.molinski

Era isso que eu estava experimentando! Obrigado. Dica rápida é usar este comando para converter arquivos em seu ambiente UNIX:$ dos2unix .bash_profile
— melwil

Tem certeza de que foi isso que você fez? Como o OS X é Unix, ele usa terminações de linha no estilo Unix com um único caractere de avanço de linha (LF), não retorno de carro (CR). O único sistema operacional popular que usou o último foi o OS 9 e os aplicativos Linux / Ubuntu anteriores.
— David Foerster

6

Depois não consegui voltar a correr. ~ / .bash_profile ou qualquer comando usual, como whoami, grep, etc. Imaginei uma maneira de apenas reexportar os caminhos necessários:

export PATH=/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/cpanel/composer/bin:/usr/local/easy/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

Isso deve funcionar na maioria dos sistemas, embora alguns desses caminhos não estejam presentes em todos os pacotes Linux. Funcionou para mim.


4

Eu acho que posso ter encontrado a resposta para o problema, se não for para você, então para outras pessoas que têm um problema semelhante. Minha resposta para isso é que eu não tenho um .bash_profile.

Então, eu estava pesquisando em toda a web e encontrei a solução. Basicamente, abra o terminal, digite touch ~/.bash_profilee pressione Enter. Isso corrigiu meus problemas. espero que faça o mesmo por você


8
LOL ... -bash: touch: command not found
— Kumar KL

2

Eu tenho o mesmo problema como você. Eu não pode usar muitos comandos popular ( ls, vi/vim..) e não pode editar /root/.bashrcquando eu entrar com sua raiz.

Finalmente. Encontrei a solução para este problema. Basta fazer login na raiz com o comando:

su -m

Depois disso, você pode usar

vim /root/.bashrc

para editar PATH.

Boa sorte!


2

Eu tive o mesmo problema. Você pode ter perdido um $ ao exportar PATH. Você deve abrir o .bash_profile no TextEdit. Se você não conseguir encontrar o arquivo no diretório, pressione Command + Shift +> para mostrar os arquivos ocultos.

Em seguida, faça a correção no PATH e salve.

No diretório do Terminal, digite: source .bash_profile.

Isto deve resolver o problema.


Obrigado, resolveu meu problema, finalmente consegui editar meu arquivo bash_profile.
— Touseef Murtaza 02/09

1

Eu tive exatamente o mesmo problema:

Se eu colocar no lxterminal:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash/

se eu inseri exatamente o mesmo comando em tty2, obtive:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash\r

\ r significa fim de linha do DOS, então eu abri o arquivo ~/.bashrce alterei o final das linhas no Krusader para o estilo unix. E já está funcionando !!! :-)

As EOLs do DOS também causam problemas esporádicos nos scripts do bash.


1

Eu tenho o mesmo problema agora depois de mudar o .bash_profile. E quero alterá-lo novamente, mas agora não posso, porque perdi todos os comandos, especialmente o comando nano e o comando vim, para não poder abrir o .bash_profile com o comando E o .bash_profilearquivo é oculto, não consigo abri-lo com o Finder.

Então, preciso encontrar uma maneira de abrir o arquivo .bash_profile. Depois de tentar várias maneiras, descobri que posso usar o Atom , porque o Atom pode ler todos os arquivos em uma pasta do projeto, incluindo os arquivos ocultos. Então, basta abrir o Atom e selecionar a pasta File -> Openescolher <yourusername>e, em seguida, todos os arquivos ocultos serão exibidos na visualização em árvore do Atom, incluir o .bash_profile!! Após remover a última modificação e reabrir o Terminal, todos os comandos voltaram! :)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.