Всегда заключайте свои замены в кавычки. Не добавляйте побочные кавычки к своим строкам.
foo="${file#...}"
bar="${file%...}"
baz="$file"
Не используйте переменную среды
в скрипте. Это предпочтительная интерактивная оболочка пользователя. Вы ничего не знаете о синтаксисе, который он поддерживает. Это может быть TCSH, ZSH, Fish, RC, ...
Не загружайте .bashrc
из скрипта. Пользователю, скорее всего, поставит вещи, которые полагаются на Bash, будучи интерактивными и иметь терминал; Это может зависать или перенастроить свой терминал или скрыть выход вашего сценария или любое количество плохих вещей. Когда вы запустите Bash -c ...
, .bashrc
не загружен, и это по дизайну.
Если вам нужно проверить, что Путь
- это простой, вы можете сделать это в Python, вам не нужно вызывать оболочку для этого. Если «Код должен быть надежным в лицо плохо настроенных средов», вы имеете в виду, что ваш сценарий Python должен пытаться воспроизводить путь интерактивных оболочек, даже если он не запускается с одного, то не: вы далеко более вероятно испортить в странные способы (и, в частности, чтобы переопределить явную настройку от пользователя), чем вы, вероятно, поможете пользователю.
Если в течение определенной причины ваш скрипт бросает пользователь в интерактивную оболочку, то выполните пробежку OS.environ ['Shell']
, падают на pwd.getPwuid )). pw_shell
Если переменная среды не установлена. Это запустит интерактивную оболочку при условии, что ваш скрипт работает в терминале, вам не нужно пытаться догадаться -I
или другие варианты, которые могут или не могут означать, что вы надеетесь. Если ваш скрипт не работает в терминале, то не имеет никакого дела, пытаясь взаимодействовать с пользователем и не следует запускать интерактивную оболочку.