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
。