Редактировать сценарий оболочки и сценарий python во время его работы - PullRequest
1 голос
/ 09 мая 2020

Недавно я нашел статью о редактировании сценария оболочки во время его работы.

Редактировать сценарий оболочки во время его работы

Я подготовил этот код для воспроизведения этого явления с дополнительным вызовом скрипта python. Я обнаружил, что echo в bash НЕ был изменен редактированием, в то время как сценарий python был затронут.

Может ли кто-нибудь объяснить это явление? Я ожидал, что все выходные данные std должны быть «изменены».

  • test. sh
#!/bin/bash
sleep 30

echo "not modified"
python my_python.py
echo "not modified"
  • my_ python .py
print("not modified")
  • Результат вывода
$ bash test.sh  // while sleeping, I edited test.sh and my_python.py to "modified"
not modified
 modified
not modified

1 Ответ

3 голосов
/ 09 мая 2020

Сценарий bash уже загружен в память и выполняется, и результаты не будут затронуты до следующего запуска. Сценарий python еще не загружен и загружается в память после его изменения.

Если вы сделаете обратное и запустите сценарий bash из эквивалентного сценария python, вы получите то же самое обратное поведение. побайтно по мере его выполнения, некоторые, я думаю, загружают его блоками по 8 КБ (не обязательно весь файл), некоторые делают еще более сложные вещи (AIUI также может зависеть от ОС, в которой они работают). ответ Перезаписать выполнение bash файлов сценария . Net результат: не рассчитывать на какое-либо конкретное поведение. "

Тем не менее, поведение ОС OP, похоже, указывает на полную загрузку скрипт, который объясняет текущее поведение, хотя и не гарантирует его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...