在linux中创建命令

时间:2012-04-05 12:41:46

标签: linux bash

我创建了一个简单的脚本:

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

3 个答案:

答案 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目前更喜欢哪一个。