TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #212 11.4K
Всех рад видеть, привет! Сразу к делу. В оболочке Bash есть такая настройка, как «set -k», если по ней вызвать хелп, то получим следующее:

-k All assignment arguments are placed in the environment for a command, not just those that precede the command name.


То есть, при активации этой настройки, все что будет похоже на присваивание переменным значений, поместиться в среду команд. И совершенно не важно, где в строке находится это присваивание.

Короче говоря, если в команде используется синтаксис присваивания (HUY=512), то эта команда не получит этих присвоенных опций в качестве аргументов. Чтобы стало понятнее, давай на практике.

set -k  
dd if=/dev/zero of=/dev/null count=1 bs=2048


По идее, команда dd должна прочитать блок размером 2048 байта из устройства /dev/zero и записать эти байты в устройство /dev/null. А после выполнения — завершить работу.

На экран должны получить нечто подобное:

1+0 records in
1+0 records out
2048 bytes (1.0 kB, 1.0 KiB) copied, 9.4642e-05 s, 10.8 MB/s


Но так как мы выполнили «set -k», все будет иначе. Утилита dd не получит указанных опций в качестве аргументов и будет пытаться читать и писать блоками по 512 байт (512 по умолчанию). После выполнения команды, мы получаем — Хуй с маслом! Ничего! Хотя ожидали получить — завершение работы.

Выполнив «set -k» утилита dd просто заблокировалась на чтении стандартного потока ввода и ожидает данные. Вот такие перлы!

Обожаю угорать над студентами, сначала втихую активируем «set -k» и просим решить простую задачку со звездочкой. Но задачка почему-то не решается. А дальше начинается гогул, strace и бессонные ночи.

Если нарвался на подобное поведение, как вариант, проверь этот самый «set -k». Деактивировать эту фигню, так: «set +k».

Всегда ору с этого синтаксиса, плюс = отключить, минус = включить.

Для чего вообще нужна «set -k» и где применяется? Возможно для фоновых процессов, ну либо угорать над студентами. Если знаешь истинное применение, пиши в комменты, будет интересно.

Давай, увидимся вечером, хорошего тебе дня!


tags: #bash
—
💩 @bashdays
More from @bashdays
  1. Sep 29, 2026Самый жаркий холивар в команде — это не systemd, а какие заказать роллы на всю команду. Од…
  2. Sep 24, 2026Post #1565
  3. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  4. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  5. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
  6. Sep 9, 2026Всем привет, с вами TagdTagd! Я тут вынужденно перешёл на MAX. Просто Telegram перестал ра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →