更改.bash_profile后,每个命令都会失败,并显示“找不到命令”?


46

我正在更新.bash_profile,不幸的是,我进行了一些更新,现在我得到了:

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

我的bash_profile实际上会引入其他.sh文件(为它们提供源文件),因此我不确定到底是哪个修改引起的。

现在,如果我什至尝试并查看文件列表,我将得到:

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

关于如何跟踪错误源以及如何将终端用于列出文件等基本内容的任何提示?


如果您使用完整路径,如/ bin / ls,会发生什么?您进行了哪些更改?
KP MacGregor 2012年

2
是的,贴上你的.bash_profile
一月

/ bin / ls列出了文件,但随后在下面看到了这两行:-bash: sed: command not found -bash: git: command not found
Blankman 2012年

如果您的问题/etc/environment出在ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
哪里

Answers:


65

在我看来,您有时会覆盖默认PATH环境变量。您所遇到的错误类型表示,其中上述命令(包括)所在的位置PATH不包含。/binbash

例如,如果您这样做

PATH=/home/user/bin

代替

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

我确实做到了这一点:export PATH=PATH:EC2_HOME/bin
Blankman 2012年

2
您必须在第二个PATH字符串中使用“ $” export PATH=$PATH:EC2_HOME/bin
Manula Waidyanatha

奇怪的是如何“EC2-描述区域”不工作,即使它是在我的道路,但这个作品:$ EC2_HOME /斌/ EC2-描述区域我做了一个源重装也....
Blankman

2
看,我们不知道您在做什么,您在采购什么其他文件,文件中有什么。是的,每次您获取文件时,都内容附加到路径中(这很好,因为通常.bash_profile将只读取一次)。逐一检查它,看看会发生什么。另外,EC2_HOME是不是变量?如果是,那么您应该在$此之前添加以下内容:export PATH=$PATH:$EC2_HOME/bin
1

1
我记不清自己陷入该问题的次数以及这个答案对我有多大帮助了
Herrgott

21

开始调试bash脚本的一种方法是使用-x选项启动一个子shell:

$ bash --login -x

这将向您显示在启动该Shell时执行的每个命令及其参数。

之所以指定--login选项,是因为登录外壳程序会读取.bash_profile。有关调试bash脚本的更多信息,请参见:http : //tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html

最终,我认为一月的建议对您有用,但是对于将来的问题,该链接值得一读。


得到了:-bash:bash:命令未找到
Yassine Qoraiche

10

我可能已经找到问题了。它对我有用,也许对你有用...

我的编辑器默认使用Windows(LF / CR)保存。由于我同时使用两个系统,因此看起来很合逻辑。当我需要弄乱我的东西时.bash_profile,我在注释掉并尝试了一些东西之后才意识到,没有任何效果。我将保存内容更改为OS X格式(仅CR),可惜!在终端中不再有“找不到命令”!

可能就是那么容易!


非常微妙的事情使我发疯。感谢您添加此答案!
samuel.molinski 2014年

这就是我所经历的!谢谢。快速提示是使用此命令在UNIX环境中转换文件:$ dos2unix .bash_profile
melwil

您确定那是您所做的吗?由于OS X是Unix,因此它使用Unix样式的行尾,并且带有单个换行符(LF)字符,而不是回车符(CR)。唯一使用后者的流行操作系统是OS 9和以前的版本,而Linux / Ubuntu应用程序会对此感到非常困惑。
David Foerster

6

等我不能再跑了。〜/ .bash_profile或任何普通命令,例如whoami,grep等。我想出了一种仅重新导出所需路径的方法:

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

尽管其中一些路径并非在所有Linux软件包中都存在,但这在大多数系统中都应该起作用。它为我工作。


4

我想我可能已经找到了问题的答案,如果不是对您,那么对其他有类似问题的人。我对此的回答是我没有.bash_profile

因此,我在网上搜索了所有内容,然后找到了解决方案。基本上是打开终端,键入touch ~/.bash_profile并按Enter。那解决了我的问题。希望对你也一样


8
大声笑... -bash:触摸:未找到命令
Kumar KL

2

我有和你一样的问题。我无法使用许多常用命令(lsvi/vim..),也无法/root/.bashrc在以suroot用户登录时进行编辑。

最后。我找到了解决此问题的方法。只需使用命令登录root:

su -m

之后,您可以使用

vim /root/.bashrc

编辑PATH。

祝好运!


2

我有同样的问题。您在导出PATH时可能错过了$。您应该在TextEdit中打开.bash_profile。如果在目录中找不到文件,请按Command + Shift +>显示隐藏的文件。

然后更正PATH,然后保存。

在终端上的目录中,键入:source .bash_profile。

这样可以解决问题。


感谢它解决了我的问题,终于我能够编辑我的bash_profile文件。
Touseef Murtaza

1

我有完全一样的问题:

如果我把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/

如果我在tty2中输入了完全相同的命令,则会得到:

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表示DOS行尾,因此我打开了文件~/.bashrc,并将Krusader中的行尾更改为unix样式。它的工作已经!!!:-)

DOS EOL在bash脚本中也会产生令人毛骨悚然的问题。


1

更改密码后,我遇到同样的问题.bash_profile。而且我想将其改回,但现在不能了,因为我丢失了所有命令,尤其是nano命令和vim命令,因此无法使用命令打开.bash_profile。并且.bash_profile是一个隐藏文件,我无法使用Finder打开它。

因此,我需要找到一种方法来打开.bash_profile文件。 在尝试了许多方法之后,我发现我可以使用Atom,因为Atom可以读取项目文件夹中的所有文件,包括隐藏文件。因此,只需打开Atom,然后选择File -> Open<yourusername>然后选择文件夹,然后所有隐藏文件都将显示在Atom的树视图中,包括.bash_profile!!。删除上一次修改并重新打开终端后,所有命令又回来了!:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.