我在客户端和服务器上都使用 Bash。通过 SSH 运行命令时:
ssh <host> 'declare'
给出一个 shell 变量列表。
ssh <host> 'mount'
给出挂载点列表。
但是,declare
是 Bash 内置mount
命令,而是外部命令。如果服务器上有一个内置的 shell 和一个同名的外部命令,SSH 如何知道要运行哪个?
Jak*_*uje 21
在ssh
运行您在远程用户的外壳提供的命令(从所获得的/etc/passwd
),作为可见从源代码:
argv[0] = (char *) shell0;
argv[1] = "-c";
argv[2] = (char *) command;
argv[3] = NULL;
execve(shell, argv, env);
Run Code Online (Sandbox Code Playgroud)
因此,在远程服务器上为您的示例执行的相应命令是:
bash -c declare
bash -c mount
它们都被传递给bash
和 评估。内置函数在内部进行评估,并调用外部命令,就像您从本地命令行提示符处执行此操作一样。
归档时间: |
|
查看次数: |
1681 次 |
最近记录: |