Taskwarrior может сделать то, что Вы хотели немного лучше, чем простой сценарий оболочки. 30 вторых Учебных руководств должны сказать Вам, если я прав или неправ.
Те переменные среды являются все дополнительными. Если они не установлены затем, Ваш сценарий должен заменить значениями по умолчанию, данными в самой спецификации.
someprog --cachedir "${XDG_CACHE_HOME:-$HOME/.cache}"
Плюс значения по умолчанию:
man xdg-user-dir
=> СМ. ТАКЖЕ:xdg-user-dirs-update
(1)
man xdg-user-dirs-update
=> СМ. ТАКЖЕ:user-dirs.defaults
(5)
man user-dirs.defaults
=> user-dirs.defaults
под первымXDG_CONFIG_DIRS
(по умолчанию:/etc/xdg
)
Так:
read -r -d : <<<"${XDG_CONFIG_DIRS:=/etc/xdg}" XDG_USER_DIRS_DEFAULTS
XDG_USER_DIRS_DEFAULTS+=/user-dirs.defaults
"${XDG_CACHE_HOME:-~/.cache}"
доступ. Оптимально там должен существовать подобный механизм, поскольку существует с"$(xdg-user-dir VIDEOS)"
если то значение по умолчанию неявно. Тем путем я не должен помнить значение по умолчанию за каждую переменную XDG. – Tim Friske 06.12.2012, 20:43"${XDG_CACHE_HOME:-~/.cache}"
является неправильным, нужно использовать"${XDG_CACHE_HOME:-$HOME/.cache}"
вместо этого. – Flimm 30.09.2013, 13:21