Solaris 的命令行限制

发布于 2024-07-07 10:21:03 字数 214 浏览 5 评论 0原文

我有一个应用程序可以通过 SSH 在 Linux 服务器上执行命令。 当我连接到 Solaris 服务器时,一切都不起作用。 Solaris 命令行似乎限制为 267 个字符。

有办法改变这个吗?

更新:正如之前指出的,这是对 Solaris (sh) 与 Linux (bash) 的默认 shell 的限制。 那么,现在的问题是,有没有办法改变sh的限制呢?

I have an app that executes commands on a Linux server via SSH just fine. When I connect to a Solaris server, things don't work. It seems that the Solaris command line is limited to 267 characters.

Is there a way to change this?

Update: As was pointed out before, this is a limit to the default shell for Solaris (sh) vs Linux (bash). So, now the question is, is there a way to change the limit for sh?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

冷默言语 2024-07-14 10:21:03

您可以使用此命令查看当前命令的最大长度:

$ getconf ARG_MAX
1048320

我创建了一个脚本,可以 确定远程命令的最大长度。 正如克雷格建议的那样,最好的选择是将命令通过管道传输到标准输入(如果可以的话)。

You can see you current command length maximum with this command:

$ getconf ARG_MAX
1048320

I've created a script which can determine the maximum length of a remote command. As Craig suggested, your best bet is to pipe the command in to standard in, if that's an option.

七禾 2024-07-14 10:21:03

我相信(尽管可能是错误的)这与您连接到的默认 shell 有关。 如果您在 Solaris 上将 shell 更改为您在 Linux 上使用的 shell,是否可以解决问题?

如果有更好的解决方案,请评论,我会更改我的答案。

I believe (though may be wrong) that's related to the default shell you're connecting to. If you make the change on Solaris to the same shell you're using on Linux, does that fix the problem?

Please comment if there's a better route to a solution, and I'll make the change in my answer.

何必那么矫情 2024-07-14 10:21:03

在我看来,您的选择是:

  1. 通过更改用户的默认值来更改您在 Solaris 上使用的 shell。
  2. 不要更改 shell,而是更改运行命令的方式。

第一个很简单,但需要管理员对每个用户/机器组合进行更改,并且可能会影响其他程序。 从长远来看,改变运行命令的方式会更快、更容易维护。 举个例子,假设您需要执行以下命令:

/usr/bin/foo with a very long list of options and parameters

现在您可能正在执行以下操作:

ssh user@machine "/usr/bin/foo with a very long list of options and parameters"

但您可以执行以下操作:

echo "/usr/bin/foo with a very long list of options and parameters" | \
ssh user@machine "/bin/bash"

这将执行您想要的操作。

As I see it, your choices are:

  1. Change which shell you use on Solaris, by changing the default for the user.
  2. Don't change the shell, but change the way you run the commands.

The first is easy, but requires an administrator to make a change for every user/machine combination, and may affect other programs. Changing the way you run commands will be faster, and easier to maintain in the long run. As an example, suppose you need to execute the following:

/usr/bin/foo with a very long list of options and parameters

Right now you're probably doing something like this:

ssh user@machine "/usr/bin/foo with a very long list of options and parameters"

But you could do the following instead:

echo "/usr/bin/foo with a very long list of options and parameters" | \
ssh user@machine "/bin/bash"

This will do what you want.

赴月观长安 2024-07-14 10:21:03

只需更改用户的 shell 解释器(编辑 /etc/passwd)
或者
临时运行另一个 shell,例如。 korn shell如下:

serwer%

serwer% echo *

Arguments too long

serwer% ksh

$ echo *

file1

file2

....

file 10000

% exit

serwer%

Simply change shell interpreter for user (edit /etc/passwd)
or
temporary run another shell for eg. korn shell as below:

serwer%

serwer% echo *

Arguments too long

serwer% ksh

$ echo *

file1

file2

....

file 10000

% exit

serwer%
折戟 2024-07-14 10:21:03

当我在 Solaris 10 上运行配置并且配置脚本给出命令行长度的数字时,答案通常在 256 KB 范围内。 Solaris 上的标准 shell 肯定没有低于 300 字节的限制。

也就是说,我不确定你的问题是什么。 我可能会冒险猜测 Solaris SSH 的限制较短 - 我没有遇到过这个问题,但我倾向于使用 SSH 作为直接(交互)连接的方式,而不是运行长命令。

When I run configure on Solaris 10 and the configure script comes up with a figure for the length of the command line, the answer is normally in the 256 KB range. The standard shells on Solaris most certainly do not have a limit under 300 bytes.

That said, I'm not sure what your problem is. I might hazard a guess at the Solaris SSH having a shorter limit - I've not encountered the problem, but I tend to use SSH as a way to connect directly (interactively) rather than to run long commands.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文