我需要设置一个这样的变量:
./configure ... PKG_CONFIG_PATH=/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/imagemagick/lib/pkgconfig:/usr/local/opt/gnutls/lib/pkgconfig
一个显而易见的方法是使用 Brace Expansion 以下内容:
PKG_CONFIG_PATH=/usr/local/opt/{libxml2,imagemagick,gnutls}/lib/pkgconfig PKG_CONFIG_PATH=${PKG_CONFIG_PATH// /:}
但是,这不起作用(在变量设置中不进行大括号扩展,而且在 是 完成,分隔符是 空间 似乎没有办法改变这一点。
那么,有没有办法避免每个包显式前缀和后缀的丑陋呢?
假设这是一个脚本,而不是交互使用,我只使用一个数组。
pkg_config_path=( /usr/local/opt/{libxml2,imagemagick,gnutls}/lib/pkgconfig ) ./configure ... PKG_CONFIG_PATH=$(IFS=:; printf %s "${pkg_config_path[*]}")
此时,您可能需要考虑是否需要使用大括号扩展,只需显式列出目录:
pkg_config_path=( /usr/local/opt/libxml2/lib/pkgconfig /usr/local/opt/imagemagick/lib/pkgconfig /usr/local/opt/gnutls/lib/pkgconfig )