Графический интерфейс командной строки ввода текста для Gnome

Вы не можете сделать это, кроме как подключиться к отладчику, знающему о внутренней структуре вашей оболочки, и использовать эти знания для извлечения этой информации.

Нет, даже вызов getenv("OK")или system("printenv OK >/this/tty")изнутри может сработать, потому что большинство оболочек не используют стандартные функции libc для управления средой и запускают команды, явно передавая список окружения в качестве аргумента execve().

Среда из /proc/PID/environ— это среда, которая была передана при запуске процесса, с учетом того, что она могла быть изменена процессом намеренно или непреднамеренно.

Например, этот (UB -, запускающий )C-код, "добавит" WTF=helpк /proc/PID/environ, который может быть возвращен или не возвращен getenv()или передан дочернему элементу, в зависимости от о том, когда и как были вызваны setenv()или putenv():

% cat a.c
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv)
{
        memcpy(argv[argc + 1], "WTF=help", 9);
        pause();
}
% cc a.c
%./a.out &
[4] 3445
% tr '\0' '\n' </proc/3170/environ | head -n1
WTF=help
1
06.11.2021, 14:57
1 ответ

Zenity — вероятно, самый простой способ создания простых диалогов с графическим интерфейсом из сценариев оболочки. Диалог ввода выглядит следующим образом:

#!/bin/bash

TASK=`zenity --entry --text="Enter task:"`

echo $TASK

enter image description here

3
06.11.2021, 16:13

Теги

Похожие вопросы