php - 我可以在 PHP 函数 exec() 中使用 linux 内置实用程序 compgen 吗?

标签 php linux exec compgen

我需要使用 PHP 函数 exec() 获取 Linux 命令的完成变体。 我试试这个:

$c = exec('compgen -c pyt');

我除了得到这样的东西

python3.5m
python3.5
python2.7
python2
python3
python3m
python

但是我得到一个错误:

sh: 1: compgen: not found

当我直接在终端输出这个命令时是正确的:

omix@omix:~$ compgen -c pyt 
python3.5m 
python3.5 
python2.7 
python2
python3 
python3m 
python

我也试过使用函数 shell_exec() 但它没有用。

最佳答案

我终于解决了这个问题。 我发现我在终端 session 中和运行 PHP exec()(或 shell_exec())函数时使用了不同的 shell:

omix@omix:~$ ps -p $$
  PID TTY          TIME CMD
15471 pts/0    00:00:00 bash
omix@omix:~$ php -a
Interactive mode enabled

php > echo shell_exec('ps -p $$');
  PID TTY          TIME CMD
15908 pts/0    00:00:00 sh

现在我像这样从 PHP 运行 shell 命令:

$c = shell_exec('/bin/bash -c "compgen -c pyt"');

这对我有用。

关于php - 我可以在 PHP 函数 exec() 中使用 linux 内置实用程序 compgen 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639997/

相关文章:

html - 通过重命名从网页下载链接

linux - 批量重命名图片为文件夹名+序号

linux - 脚本命令从 shell 中丢失别名

javascript - node.js 同步执行系统命令

c - Execlp 函数无法找到二进制文件

php - 如何在MySQL查询中获取新闻的计数作为别名列?

php - Swiftmailer 4 不会将退回邮件检索为 $failedRecipients

php - 在 MySQL 中导入和处理文本文件

php - Laravel ioc 自动解析 - 从 Controller 工作但不是从自定义类工作

linux - api-ms-win-crt-runtime-l1-1-0.dll._get_narrow_winmain_command_line