在shell/bash脚本中找不到命令

在shell/bash脚本中找不到命令,bash,ubuntu,Bash,Ubuntu,我使用的是ubuntu 14.10 我无法在我的脚本文件中找到自几天前以来运行良好的常用命令。我现在必须给出它们的完整路径 /bin/mkdir "beta1" /usr/bin/npm install "$COMMAND" 应该是这样的: mkdir "beta1" npm install "$COMMAND" 我甚至尝试在脚本中添加source ~/.profile,但没有任何帮助。如果您在评论中发布

我使用的是ubuntu 14.10

我无法在我的脚本文件中找到自几天前以来运行良好的常用命令。我现在必须给出它们的完整路径

           /bin/mkdir "beta1"
           /usr/bin/npm install "$COMMAND"
应该是这样的:

           mkdir "beta1"
           npm install "$COMMAND"

我甚至尝试在脚本中添加source ~/.profile,但没有任何帮助。

如果您在评论中发布的路径是您路径的
逐字复制/粘贴
,您的问题是您在路径中嵌入了非ASCII字符。这很可能是因为使用windows中的编辑器(或非文本编辑器,如OpenOffice)编辑了路径,该编辑器已将非标准字符替换为常规ASCII值。查看路径的hexdump显示问题:

$ hexdump -C -n 233 pathprob.sh
00000000  23 21 2f 62 69 6e 2f 62  61 73 68 0a 0a 50 41 54  |#!/bin/bash..PAT|
00000010  48 3d 2f 75 73 72 2f 6c  6f 63 61 6c 2f 73 62 69  |H=/usr/local/sbi|
00000020  6e 3a 2f 75 73 72 2f 6c  6f 63 61 6c 2f 62 69 6e  |n:/usr/local/bin|
00000030  3a 2f 75 73 72 2f 73 62  69 6e 3a 2f 75 73 72 2f  |:/usr/sbin:/usr/|
00000040  62 69 6e 3a 2f 73 62 69  6e 3a 2f 62 69 6e 3a 2f  |bin:/sbin:/bin:/|
00000050  75 73 72 2f 67 61 6d 65  73 3a 2f 75 73 72 2f 6c  |usr/games:/usr/l|
00000060  6f 63 e2 80 8c e2 80 8b  61 6c 2f 67 61 6d 65 73  |oc......al/games|
00000070  3a 2f 75 73 72 2f 73 62  69 6e 2f 6e 6f 64 65 3a  |:/usr/sbin/node:|
00000080  2f 75 73 72 2f 6c 69 62  2f 6a 76 6d 2f 6a 61 76  |/usr/lib/jvm/jav|
00000090  61 2d 37 2d 6f 72 61 63  6c 65 2f 62 69 6e 3a 2f  |a-7-oracle/bin:/|
000000a0  75 73 72 2f 6c 69 62 2f  6a 76 6d 2f 6a 61 76 61  |usr/lib/jvm/java|
000000b0  2d 37 2d 6f 72 61 63 6c  65 e2 80 8c e2 80 8b 2f  |-7-oracle....../|
000000c0  64 62 2f 62 69 6e 3a 2f  75 73 72 2f 6c 69 62 2f  |db/bin:/usr/lib/|
000000d0  6a 76 6d 2f 6a 61 76 61  2d 37 2d 6f 72 61 63 6c  |jvm/java-7-oracl|
000000e0  65 2f 6a 72 65 2f 62 69  6e                       |e/jre/bin|
000000e9
请注意
usr/loc……al/games
的显示方式。
java-7-oracle……
也存在类似的问题。这会有效地破坏
路径
变量。两个位置的损坏字符相同
e280 8c e280 8b
。它们代表一个
e2808c
a
Unicode
e2808b
a
Unicode


解决方案--将路径复制到文本编辑器。用一个新的重新键入的
local/
删除/替换
local/
,并对
/usr/lib/jvm/java-7-oracle/db/bin执行相同的操作

使用PATH作为变量名是一个问题。我在某个时候重写了它。

echo you$PATH,只需查看使用
echo$PATH
检查您的PATH变量并正确设置它。@Alper否,他应该导出此默认路径,如果他有自定义的有用条目呢?您的脚本是否使用
PATH
作为变量名,哪个将覆盖它从shell继承的值?您的$HOME值是否包含任何空格字符?否则,要确认这是路径问题,只需使用
mkdir./betaZ
(以及该脚本的chmod 755)创建一个小脚本文件。我敢打赌这是有效的。然后,这意味着您正在覆盖安装程序脚本中某个地方的路径。所以打开
set-vx
并查找路径设置的位置。(可能不止一次)。祝你好运