В зависимости от среды, вы можете выбрать ее из переменных среды.Рассмотрим следующий код:
/usr/bin/perl -MData::Dumper -e 'print Dumper(\%ENV);' | grep sh
В моей системе Ubuntu он меня получает:
'SHELL' => '/bin/bash',
Так что я предполагаю, что это говорит о том, что я запускаю perl из оболочки bash.Если вы используете что-то еще, переменная SHELL может дать вам подсказку.
Но допустим, вы знаете, что находитесь в bash, но perl запускается из подоболочки.Затем попробуйте:
/bin/sh -c "/usr/bin/perl -MData::Dumper -e 'print Dumper(\%ENV);'" | grep sh
Вы найдете:
'_' => '/bin/sh',
'SHELL' => '/bin/bash',
Итак, оболочка все еще bash, но в bash есть переменная $_
, которая также показывает абсолютное имя файла оболочки илисценарий выполняется, что также может дать ценную подсказку.Аналогичным образом, для других сред, скорее всего, в хеше perl %ENV
останутся подсказки, которые должны дать вам ценные подсказки.