Ви, ймовірно, могли це зробити, повернувшись назад до корінних оболонок і працюючи над тим, чи це було розпочато чимось, що прирівнюється до "ви", чи іншою програмою.
Отримайте PID оболонки (ідентифікатор процесу), а з цього його PPID (ідентифікатор батьківського процесу). Продовжуйте підніматися до тих пір, поки не дістанетесь до чогось, що говорить вам, звідки воно прийшло. Можливо, вам доведеться експериментувати на своїй системі - принаймні, я не знаю, чи буде вона універсальною.
Наприклад, в моїй системі дістаньте PID оболонки та використовуйте, ps
щоб показати, що це bash
:
$ echo $$
18852
$ ps --pid 18852
PID TTY TIME CMD
18852 pts/1 00:00:00 bash
Отримайте PPID 18852:
$ ps -o ppid= -p 18852
18842
Дізнайтеся, що таке PPID (18842):
$ ps --pid 18842
PID TTY TIME CMD
18842 ? 00:00:02 gnome-terminal
Ми можемо бачити, що це gnome-terminal, тобто емулятор термінала / вікно терміналу. Можливо, це досить добре для вас, якщо ваша оболонка, запущена іншою програмою, не працює у вікні емулятора терміналу.
Якщо це недостатньо добре, перейдіть на інший рівень:
$ ps -o ppid= -p 18842
2313
$ ps --pid 2313
PID TTY TIME CMD
2313 ? 00:00:00 init
Це говорить нам, що gnome-terminal
було розпочато init
. Я підозрюю, що ваша оболонка, запущена іншою програмою, матиме щось інше.
env
команду. Подивіться, чи існує змінна для VS змінна.