切换git分支时,从.bash_profile重新加载bash脚本

时间:2017-09-14 18:50:36

标签: git bash sed alias

我已经厌倦了寻找Jira门票,因为我正在制作任何故事分支(Git),所以我制作了这个小脚本并把它放在.bash_profile中。

alias ojt="open https://mycompanyname.atlassian.net/browse/MARMO-"$(git symbolic-ref HEAD | sed s/[^0-9]*//g)""

在切换分支之前正常工作: git checkout 1234

切换分支后,我使用ojt别名命令,它会从上一个分支打开Jira票据。

如果我重新加载source ~/.bash_profile,它就有效。我不想重新加载整个个人资料。

1 个答案:

答案 0 :(得分:3)

试试这个:

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)'

请注意,如果要混合扩展值和延迟值,则必须使用不同的引号连接字符串以使其工作;如果您只是嵌套它们,您将在字符串中获得额外的引号字符,并且最外面的引号集将用于确定是否扩展变量和子shell。

示例:

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