总结
这有效:
ssh [email protected]
$ qconfig
但这些确实不是工作(这对我来说没有意义,因为它们应该是相同的):
ssh [email protected] qconfig
sh: qconfig: cannot execute - No such file or directory
或者
ssh [email protected]
$ sh
$ qconfig
sh: qconfig: cannot execute - No such file or directory
我想使用。如何使用?ssh [email protected] "some; commands; including; qconfig"
长版本
我有一个命令,我想通过非交互式 ssh 命令或 sh 子 shell 提交到远程主机,但通过这种方式提交时找不到它,尽管它是在正常的交互式会话中发现。
细节:
操作系统:QNX
外壳: sh
交互式命令,一切按预期工作:然后在提示符下提供
ssh [email protected]
qconfig
但如果我
sh
这样做qconfig
,它在那个子 shell 中不起作用非交互式命令不是工作:
ssh [email protected] qconfig
例子:
[me.LOCAL-PC] > ssh [email protected]
[email protected]'s password:
remotehost:/home/me $ echo $SHELL
/bin/sh
remotehost:/home/me $ qconfig
<…> (it works fine here)
remotehost:/home/me $ sh
remotehost:/home/me $ qconfig
sh: qconfig: cannot execute - No such file or directory
remotehost:/home/me $ exit
remotehost:/home/me $ sh -c qconfig
sh: qconfig: cannot execute - No such file or directory
remotehost:/home/me $ exit
[me.LOCAL-PC] > ssh [email protected] qconfig
[email protected]'s password:
sh: qconfig: cannot execute - No such file or directory
我对 QNX 不是很熟悉,所以不确定 qconfig 是否是内置的。如果是内置的,那就说得通了,因为 qconfig 不在我的 PATH 上,如果我这样做,它会which qconfig
显示which: no qconfig in /usr/bin:/bin:<…>
。
我已经看到有一个 QNX qconfig,如下所示此链接,但我不太确定这就是正在执行的操作,即使它对我来说确实有效,因为我正在使用的那个不接受该页面列出的命令行选项 - 我尝试了-a
,,-b
和-c
它说-a: No such file or directory
。
哪些差异可能导致这样的问题?更重要的是,我怎样才能让shell像shell一样正确使用命令?ssh [email protected] <command>
ssh [email protected]
答案1
当然,经过无休止的搜索和绞尽脑汁之后,我终于在 StackExchange 上提问,但仅仅半小时后我终于明白了。
检查您的命令是否是别名。
remotehost:/home/me $ alias
qconfig='some other command'
如果它是一个未设置的别名,那么您可以直接提供别名将执行的命令。因此,如果qconfig='some other command'
,则执行ssh [email protected] some other command
显然有人设置了系统,导致我尝试运行的命令被别名化。我习惯在which <command>
会告诉您命令是否是别名的机器上工作,因此在这种情况下我没有想到要检查这一点。