尽管在 PATH 中,但找不到命令

Command not found although in PATH

在我的 shtcsh 中,我可以毫无问题地调用 netstat。但是,使用 Bash 时,我收到消息:

bash: netstat: command not found

所有 shell 的 PATH 变量完全相同:

PATH=/usr/lpp/Printsrv/bin:/usr/lpp/java/J6.0/bin:/EXEX/exec:/bin:/usr/sbin:/etc:/usr/lpp/perl/bin:.:/usr/lpp/ported/bin:.:.

Netstat 位于 /bin 目录中,因此应该包含在 PATH 中...

有什么想法吗?

谢谢!

我们还没有足够的信息来说明这里出了什么问题,但我要冒昧地建议你的路径不是你想的那样,更不用说路径了你引用的是非常不标准的,很可能不是你想要的。

你说你的路是...

您引用的路径分解后如下所示:

/usr/lpp/Printsrv/bin
/usr/lpp/java/J6.0/bin
/EXEX/exec
/bin
/usr/sbin
/etc
/usr/lpp/perl/bin
.
/usr/lpp/ported/bin
.
.

当前工作目录(.)三遍不会有问题,但看起来确实有点奇怪。

您缺少标准目录 /usr/bin。如果你有 /usr/sbin 你也应该有 /sbin 以保持一致性。

我无法想象你为什么要把 /etc 放在你的路径中。该目录中不应该有可执行文件。

你的实际路径是什么...

炮弹之间应该没有区别。您在这里的 shell 中发现错误的可能性很小,因此让我们假设您的路径在每个 shell 中都不完全相同,并尝试找出为什么它看起来如此...

所有 shell 都应该告诉您,您的路径与这两个命令的路径相同:

# The PATH variable
echo "$PATH"

# The PATH environment variable
env | /bin/grep PATH

记住有两种变量。内部变量和环境变量。 PATH 应该是一个环境变量。

我不确定您是如何找到以下行的:

PATH=/usr/lpp/Printsrv/bin:/usr/lpp/java/J6.0/bin:/EXEX/exec:/bin:/usr/sbin:/etc:/usr/lpp/perl/bin:.:/usr/lpp/ported/bin:.:.

如果这是从您的 .profile.bashrc 获取的,那么应该导出它以确保将 PATH 设置为环境变量。

export PATH=/usr/lpp/Printsrv/bin:/usr/lpp/java/J6.0/bin:/EXEX/exec:/bin:/usr/sbin:/etc:/usr/lpp/perl/bin:.:/usr/lpp/ported/bin:.:.