用别名“ &&”串在一起的一组命令在别名时不起作用,而在直接输入时起作用。
我有11条命令集,用于初始化Git,创建新的存储库,创建一些配置文件以及创建多个分支。
为方便起见,我将它们组合为&& s字符串的单个命令。直接粘贴时此命令有效。运行别名版本时失败。
我已将我的~/.bashrc
文件编辑为以下代码:
alias repo='git init && hub create && echo "/node_modules" >.gitignore && tsc --init && git add -A && git commit -S -m "First commit" && git push -u origin master && git checkout -b dev && git push origin head && git checkout -b new_feature && git push origin head'
我尝试将其移至其自身功能:
createRepo () {
git init
&& hub create
&& echo "/node_modules" >.gitignore
&& tsc --init
&& git add -A
&& git commit -S -m "First commit"
&& git push -u origin master
&& git checkout -b dev
&& git push origin head
&& git checkout -b new_feature
&& git push origin head
}
alias repo="createRepo"
它给出完全相同的结果。
要清楚,粘贴git init && hub create && echo "/node_modules" >.gitignore && tsc --init && git add -A && git commit -S -m "First commit" && git push -u origin master && git checkout -b dev && git push origin head && git checkout -b new_feature && git push origin head
会直接使其正常工作。
只有当我尝试对其进行别名时,才会出现语法错误。
我正在使用nano
我希望repo
被Bash破坏:
实际:bash: syntax error near &&
答案 0 :(得分:3)
bash不知道命令会继续到下一行,除非:
您使用换行符
createRepo () {
git init \
&& hub create \
&& echo "/node_modules" >.gitignore \
&& ...
您将&&
放在行尾
createRepo () {
git init &&
hub create &&
echo "/node_modules" >.gitignore &&
...
答案 1 :(得分:0)
Bash从一开始就加载~/.bashrc
文件,因此我不得不完全重新启动Bash。
此后,我的repo
别名起作用了。