为了让我的 干涸bashrc
,我尝试改变这一点,
CDPATH=".:~/Development:~/Development/resources:~"
对此,
CDPATH=".:~/Development{,/resources}:~"
但我发现大括号扩展并未在带引号的字符串内执行。有办法实现这一点吗?
答案1
是的,实际上有:
set . ~/Development{,/resources} ~
IFS=:; CDPATH="$*"
特殊参数替换每个位置参数之间的"$*"
第一个字符。$IFS
因此,如果您set
将所需的参数扩展为单独的参数,则可以在分配时根据需要快速填写适当的分隔符。
如果,正如所建议的那样,您可以使用一些关于如何保存/恢复 的值的指针$IFS
,您可以这样做:
CDPATH=$IFS
set . ~/Development{,/resources} ~
IFS=:${IFS+;IFS=\$CDPATH}
eval 'set "$*"; unset IFS'"
$IFS; CDPATH=\$1"
有时,为了保持环境清洁,做一些调整是值得的 - 当一个参数影响环境时,无论它是否设置 - 并且以不同的方式取决于 - 最好小心。
不过,只有在您无法保证无法持久控制的环境中,此类预防措施才是真正必要的 - 换句话说,您不需要在自己的 rc 文件中执行此操作。在这样的情况下,你几乎可以保证永久控制 - 所以你可以(和应该)设置适合您的特殊 shell 参数。