我创建了一个简单的脚本:
echo "the path of the current directory is `pwd`"
并以名称pathinfo
然后我在我的主页上创建了一个bin目录,路径为
/home/vpnsadmin/bin
并将我的脚本(pathinfo)复制到该bin目录。
现在我想将此脚本作为命令运行,但它显示错误
-bash: /usr/bin/test2: No such file or directory
但是如果将我的脚本(pathinfo)复制到“/ usr / bin /”,那么它将作为命令运行。
PATH环境变量设置为 -
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/vpnsadmin/bin
我的问题是为什么shell在/home/vpnsadmin/bin
中出现时不会将其作为命令运行。
要不然
为什么它只检查/usr/bin
处的二进制文件而不是/home/vpnsadmin/bin
或/bin
答案 0 :(得分:3)
执行命令的shell需要在执行时具有正确的PATH变量集 ,并且根据shell,可能需要创建自己的内部(哈希)映射可用的命令。
假设您正在使用bash,请在/usr/bin
保存的脚本中尝试以下操作:
$ PATH=/ test2
$ PATH=/usr/bin test2
在第一种情况下,您应该得到预期的“未找到”错误,在第二种情况下应该有效。要进行的第三次测试是作为练习......
我必须说,如果您真的尝试
,提供的错误消息看起来有点奇怪$ test2
而不是
$ /usr/bin/test2
将命令复制到/usr/bin
。
修改强>
此外,避免以任何形式或形式命名脚本测试。这对初学者造成了很大的困惑。
提示:
man test
答案 1 :(得分:0)
你有没有在脚本顶部进行bash的路径,你是否在pwd周围使用了反引号?
#!/bin/bash
echo "the path of the current directory is `pwd`"
您是否将文件设为可执行文件?
chmod +x pathinfo
答案 2 :(得分:0)
您路径中的某处有另一个脚本pathinfo
,其中包含对/usr/bin/test2
的调用
请尝试whereis pathinfo
查看有多少内容和which pathinfo
,以了解您的shell目前更喜欢哪一个。