Как получить чистую среду в оболочке ksh?

Я использовал этот розыгрыш сценария перенаправления в своем офисе для переворачивания изображений браузера вверх дном.

Вы были бы поражены видеть, как люди паникуют, когда они думают, что получили некоторый тип вируса.

Можно также использовать розыгрыш для создания изображений расплывчатыми (Вы выбираете степень нерезкости), довольно забавный, когда Вы не переусердствовали его - люди думают, что их глаза устали, или монитор является wonky.

6
02.11.2011, 16:45
2 ответа

~/.profile только читается оболочками входа в систему. ~/.kshrc только выполняется для интерактивных оболочек.

Солярис env поддерживает синтаксис (теперь удержанный от использования, но сохраненный в Солярисе, который относится к обратной совместимости серьезно), env - /path/to/command работать /path/to/command в пустой среде. Так env - /usr/bin/ksh -c /path/to/script запустит скрипт в пустой среде и не получит сценария профиля. Ksh мог бы установить некоторые переменные среды по своей собственной инициативе: Я не знаю о ksh88, но наборах ksh93 _ и PWD, и наборы pdksh _ и PATH.

Можно выборочно или без разбора очистить переменные среды из ksh.

unset x
for x in $(typeset +x); do
  unset $x
done
7
27.01.2020, 20:24
  • 1
    env - /path/to/command стандартный совместимый синтаксис, если я не неправильно понимаю то, что Вы имеете в виду. –  jlliagre 02.11.2011, 23:59
  • 2
    @jlliagre Это? О, это было слишком теперь, это было забрано в пользу env -i. –  Gilles 'SO- stop being evil' 03.11.2011, 00:05
  • 3
    @Gilles: Как обычно, Ваши объяснения прекрасны. Существует ли способ публично поблагодарить Вас за все, что Вы имеете (непосредственно, и косвенно) учил меня в течение прошлых трех месяцев? :) –  rahmu 03.11.2011, 00:34
  • 4
    @rahmu Ваше новооткрытое знание или Ваше знание других тем для предоставления хороших ответов на вопросы других людей. Или иначе сделайте Интернет лучшим местом. Или иначе сделайте мир лучшим местом. –  Gilles 'SO- stop being evil' 03.11.2011, 02:30
me@local:~ $ env - /path/to/shell
$ env
_=/usr/bin/env
PATH=/usr/bin:/bin
RANDOM=24395
$

Примечания:

  • Я использовал оболочку, чтобы взглянуть на получающуюся среду, любая команда может использоваться (предположение, что env - /usr/bin/env возвраты)
  • (комментарий @jlliagre:) env команда стандарта POSIX.

Редактирование Разъяснило ответ.

4
27.01.2020, 20:24
  • 1
    К сожалению, я не мог найти его на Солярисе. –  rahmu 02.11.2011, 18:11
  • 2
    @rahmu Согласно страницам справочника (у меня нет Соляриса 10 для проверки), все версии Соляриса по крайней мере начиная с 2,4 поддержки env -. Выполненный /usr/bin/ksh и нет mksh, конечно. –  Gilles 'SO- stop being evil' 02.11.2011, 23:43
  • 3
    Действительно, env команда стандарта POSIX так окончательно в Солярисе (включая 10 и более новый). –  jlliagre 02.11.2011, 23:57
  • 4
    О, я добрался, вводят в заблуждение mksh. Я думал, что это был исполняемый файл, который "убрал" среду :-/ В этом случае ответ кажется корректным. –  rahmu 03.11.2011, 00:29

Теги

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