Я пытаюсь запустить две команды, используя программу на языке C и переменную среды Linux:
#Program name is execute
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char cmd[256] = "/home/username/hello.sh $USER";
execl("/bin/bash", "bash", "-p", "-c", cmd, NULL);
return 0;
}
Однако при запуске программы с переменной среды $ USER, для которой установлена вторая команда, втораякоманда не запустится.
env USER=";cat /home/username/hello.txt" ./execute
Hello from shell script
Жесткое кодирование второй команды в программу на C работает:
char cmd[256] = "/home/username/hello.sh ;cat /home/username/hello.txt";
./execute
Hello from shell script
Hello from text file
Я хочу, чтобы моя программа на C возвращала:
env USER=";cat /home/username/hello.txt" ./execute
Hello from shell script
Hello from text file
Как мне заставить его работать, не меняя программу на С?