Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 虽然在路径中,但未找到命令_Bash_Uss - Fatal编程技术网

Bash 虽然在路径中,但未找到命令

Bash 虽然在路径中,但未找到命令,bash,uss,Bash,Uss,在我的sh或tcsh中,我可以毫无问题地调用netstat。但是,对于Bash,我得到了一个信息: bash: netstat: command not found 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目录中,因此应包含

在我的
sh
tcsh
中,我可以毫无问题地调用
netstat
。但是,对于Bash,我得到了一个信息:

bash: netstat: command not found
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目录中,因此应包含在路径中

有什么想法吗


谢谢

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

你所说的你的道路是…

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

/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中发现bug,因此,让我们假设您在每个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
中获取的,则应将其导出以确保路径设置为环境变量

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:.:.

/bin/netstat
是否运行?我能想到的唯一一件事可能是,路径上方有一个
netstat
无效。哪个netstat的结果是什么?您的路径看起来非常奇怪(很可能不正确),并且缺少一些标准文件夹。用BASH调试该问题,并将其他shell视为转移注意力的工具。在BASH中,请向我们提供这些命令的输出
echo“$PATH”
哪个netstat
,并按照@couling和@Sobrique$/bin/netstat/$的建议尝试运行
/bin/netstat
。)$它的$不是在bash下运行的,而是在tcsh下运行的$which which$给出了$which:shell内置命令。$有人恶作剧,把这一行放在你的
中。出于安全原因,强烈反对使用
别名netstat='echo bash:netstat:command not found'
在你的
路径中包含当前目录。如果您知道并信任
/command
,请使用
/command
而不是
command
;如果您不这样做,那么,这就是不鼓励这样做的原因。
PATH=
赋值可以从配置文件中获得,而不是实际使用shell操作,这一点可能很重要。如果有什么内容覆盖了你的
.bashrc
或类似内容,那么你看到的可能根本不是事实。我创建了一个
.profile
并按照你的建议设置了
PATH=/usr/lpp/java/J6.0/bin:/EXEX/exec:/bin:/usr/sbin:/sbin
。执行
echo“$PATH”
env |/bin/grep PATH
会为所有shell提供相同的结果:在
.profile
中指定的路径。但是,
netstats
在除bash…@tripleee之外的所有shell中运行:路径分配应该从我的文件中获得。如果我指定了另一个JavaSDK的路径,那么运行
Java-version
会给出正确的答案!这就是为什么bash找不到它指向的程序不存在的原因。你的系统出了问题,所以你需要找到那个程序(如果它不存在,就安装它)。首先检查其他三个目录
/usr/bin
/sbin
/usr/sbin
,查看是否已将
ONETSTAT
移动到那里。至于为什么这在其他的炮弹上起作用。。。这真的不是很清楚。最可能的情况是,他们的配置文件中的某些内容正在创建别名,或者他们正在查找另一个
netstat