Могу ли я использовать встроенную в Linux утилиту compgen в PHP-функции exec ()?

Мне нужно получить варианты завершения для команд Linux, используя функцию PHP exec ().
Я пытаюсь это:

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

Я, кроме как получить что-то подобное

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

Но вместо этого я получаю ошибку:

sh: 1: compgen: не найден

Когда я выполняю эту команду непосредственно в терминале, вывод правильный:

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

Я также пытался использовать функцию shell_exec (), но она не работала.

0

Решение

Наконец я решил это.
Я обнаружил, что я использую разные оболочки в терминальной сессии и при выполнении PHP-функции exec () (или shell_exec ()):

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 следующим образом:

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

Это работает для меня.

0

Другие решения

Других решений пока нет …