1

I have created a simple script:

echo "the path of the current directory is `pwd`"

and saved it by the name pathinfo

then i have created a bin directory at my home page with path as /home/vpnsadmin/bin and copied my script(pathinfo) to that bin directory.

Now i want run this script as a command but it is showing error

-bash: /usr/bin/test2: No such file or directory

but if copy my script(pathinfo) to "/usr/bin/" then it runs as a command.

the PATH environment variable is set as-

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/vpnsadmin/bin

My question is why does the shell not run it as a command when it is present in /home/vpnsadmin/bin. or else why does it only check for the binary at /usr/bin and not at /home/vpnsadmin/bin or at /bin

4

3 回答 3

3

执行命令的 shell 需要在执行时设置正确的 PATH 变量,并且根据 shell,可能需要创建自己的可用命令的内部(散列)映射。

假设您使用的是 bash,请使用保存在中的脚本尝试以下操作/usr/bin

$ PATH=/ test2

$ PATH=/usr/bin test2

在第一种情况下,您应该会收到预期的“未找到”错误,而在第二种情况下它应该可以工作。第三个要执行的测试留作练习......

而且我不得不说,如果您真的尝试这样做,提供的错误消息看起来有点奇怪

$ test2

并不是

$ /usr/bin/test2

在将命令复制到/usr/bin.

编辑:

此外,避免以任何形式或形式命名您的脚本测试。这给初学者带来了很多困惑。

暗示:

man test

于 2012-04-05T12:52:20.140 回答
0

您是否在脚本顶部有 bash 的路径,是否在 pwd 周围使用了反引号?

#!/bin/bash
echo "the path of the current directory is `pwd`"

您是否使文件可执行?

chmod +x pathinfo
于 2012-04-05T12:46:42.473 回答
0

您的路径中某处还有另一个脚本pathinfo,其中包含对/usr/bin/test2

试着whereis pathinfo看看有多少which pathinfo,看看你的 shell 目前更喜欢哪一个。

于 2012-04-05T13:21:50.240 回答