Вызовите команду подоболочки с загруженным rcfile

Всегда заключайте свои замены в кавычки. Не добавляйте побочные кавычки к своим строкам.

foo="${file#...}"
bar="${file%...}"
baz="$file"
3
23.05.2017, 15:40
1 ответ

Не используйте переменную среды в скрипте. Это предпочтительная интерактивная оболочка пользователя. Вы ничего не знаете о синтаксисе, который он поддерживает. Это может быть TCSH, ZSH, Fish, RC, ...

Не загружайте .bashrc из скрипта. Пользователю, скорее всего, поставит вещи, которые полагаются на Bash, будучи интерактивными и иметь терминал; Это может зависать или перенастроить свой терминал или скрыть выход вашего сценария или любое количество плохих вещей. Когда вы запустите Bash -c ... , .bashrc не загружен, и это по дизайну.

Если вам нужно проверить, что Путь - это простой, вы можете сделать это в Python, вам не нужно вызывать оболочку для этого. Если «Код должен быть надежным в лицо плохо настроенных средов», вы имеете в виду, что ваш сценарий Python должен пытаться воспроизводить путь интерактивных оболочек, даже если он не запускается с одного, то не: вы далеко более вероятно испортить в странные способы (и, в частности, чтобы переопределить явную настройку от пользователя), чем вы, вероятно, поможете пользователю.

Если в течение определенной причины ваш скрипт бросает пользователь в интерактивную оболочку, то выполните пробежку OS.environ ['Shell'] , падают на pwd.getPwuid )). pw_shell Если переменная среды не установлена. Это запустит интерактивную оболочку при условии, что ваш скрипт работает в терминале, вам не нужно пытаться догадаться -I или другие варианты, которые могут или не могут означать, что вы надеетесь. Если ваш скрипт не работает в терминале, то не имеет никакого дела, пытаясь взаимодействовать с пользователем и не следует запускать интерактивную оболочку.

-1
27.01.2020, 21:47

Теги

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