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.