在切换git分支时从.bash_profile重新加载bash脚本
问题描述:
我厌倦了为任何故事分支(Git)追捕Jira门票,所以我制作了这个小脚本并将其放入我的.bash_profile
。在切换git分支时从.bash_profile重新加载bash脚本
alias ojt="open https://mycompanyname.atlassian.net/browse/MARMO-"$(git symbolic-ref HEAD | sed s/[^0-9]*//g)""
正常工作,直到我切换分支: git checkout 1234
开关支路后,我用ojt
alias命令,它会打开从以前的分支我是的吉拉票。
如果我重新加载source ~/.bash_profile
,它的工作原理。我不想重新加载整个配置文件。
答
试试这个:
alias ojt="open https://mycompanyname.atlassian.net/browse/MARMO-"'$(git symbolic-ref HEAD | sed s/[^0-9]*//g)'
如果你把双引号或不包围引号的子shell($(...)
),将立即进行评估(即,每当你的源.bash_profile
)。如果你用单引号将它括起来,它将被懒惰地评估(即,每当你调用别名时)。
实际上,因为你不需要任何其他值将立即展开,您应该能够只是把整个事情在单引号:
alias ojt='open https://mycompanyname.atlassian.net/browse/MARMO-$(git symbolic-ref HEAD | sed s/[^0-9]*//g)'
注意,如果混合扩展和懒惰值,您必须将这些字符串与不同的引号连接起来才能工作;如果你只是将它们嵌套在一起,你会在你的字符串中得到额外的引号字符,并且最外面的引号集将被用来确定是否扩展变量和子壳。
例子:
VAR=abc
echo "$VAR $VAR" # abc abc
echo '$VAR $VAR' # $VAR $VAR
echo "$VAR '$VAR'" # abc 'abc'
echo '$VAR "$VAR"' # $VAR "$VAR"
echo "$VAR "'$VAR' # abc $VAR
该诀窍!谢谢你教我新东西。干杯。 –