采购 .bashrc 时出错,但首次加载时不会
Error on sourcing .bashrc, but not when loading it for first time
当我 运行 source .bashrc
时,我的 .bash_aliases
文件出现错误。 但是 当我启动一个终端(我使用终结器)时,错误没有显示,并且 .bashrc
和 .bash_aliases
都得到了正确的来源。
我得到的错误是:
bash: /home/ciaran/.bash_aliases: line 33: syntax error near unexpected token `('
bash: /home/ciaran/.bash_aliases: line 33: `html ()'
这是我为 pandoc
设置的自定义别名,用于将 .md 转换为 .html。
据我所知,函数中没有错误,但无论如何这是代码:
#!/bin/sh
#[...] Regular aliases for ls and stuff
#[...] Other Stuff that is irrelevant
html ()
{
pandoc -f markdown -t html > /home/ciaran/Desktop/r.html
wait
firefox /home/ciaran/Desktop/r.html;
wait
sleep 5
rm /home/ciaran/Desktop/r.html;
}
alias html='html 2>/dev/null'
#=====================================================================================
alias src="clear && source ~/.bashrc"
为什么只在运行src
时弹出错误?
我是不是遗漏了一些明显的东西?
编辑: 我刚刚想起一个可能影响 Stuff 的细节:
我在 .bashrc
的最后一行激活了一个 anaconda 环境。我不知道这是否会导致问题,但我想我会提到它。
您的函数声明中需要 space。这就是为什么在该行报告语法错误的原因。
html () {
pandoc -f markdown -t html > /home/ciaran/Desktop/r.html
wait
firefox /home/ciaran/Desktop/r.html;
wait
sleep 5
rm /home/ciaran/Desktop/r.html;
}
请参阅此处进行清理。
print_pretty ()
{
stat -c$'%F\n%n' * | awk -vC0='3[1;34m' -vC1='3[00m' -vC2='3[1;32m' -vC3='3[1;36m' '/^directory/ {getline LEFT[++DC]; next} {getline RIGHT[++FC]} {for (i=1; i<=FC; i++) {if (system("[ -h " RIGHT[i] " ]") == 0) RIGHT[i]=C3 RIGHT[i]; if (system("[ -x " RIGHT[i] " ]") == 0) RIGHT[i]=C2 RIGHT[i]}} END {for (i=1; i<=(DC>FC?DC:FC); i++) printf "%-50s%s\n", C0 LEFT[i], C1 RIGHT[i]}'
}
# execute function first
print_pretty
# now make alias
alias l='print_pretty 2>/dev/null' #<-- sneaky ignore errors command here!
#=====================================================================================
html ()
{
pandoc -f markdown -t html > /home/ciaran/Desktop/r.html
wait
firefox /home/ciaran/Desktop/r.html;
wait
sleep 5
rm /home/ciaran/Desktop/r.html;
}
# call function
html
#=====================================================================================
alias src='clear && source ~/.bashrc'
以下是 tDarkCrystal 的答案带来的成果:
所以答案很简单...我将函数称为与别名相同的名称,所以它自己混淆了...
我将 html ()
更改为 htmlFunc ()
,现在可以使用了。
感谢 tDarkCrystal
当我 运行 source .bashrc
时,我的 .bash_aliases
文件出现错误。 但是 当我启动一个终端(我使用终结器)时,错误没有显示,并且 .bashrc
和 .bash_aliases
都得到了正确的来源。
我得到的错误是:
bash: /home/ciaran/.bash_aliases: line 33: syntax error near unexpected token `('
bash: /home/ciaran/.bash_aliases: line 33: `html ()'
这是我为 pandoc
设置的自定义别名,用于将 .md 转换为 .html。
据我所知,函数中没有错误,但无论如何这是代码:
#!/bin/sh
#[...] Regular aliases for ls and stuff
#[...] Other Stuff that is irrelevant
html ()
{
pandoc -f markdown -t html > /home/ciaran/Desktop/r.html
wait
firefox /home/ciaran/Desktop/r.html;
wait
sleep 5
rm /home/ciaran/Desktop/r.html;
}
alias html='html 2>/dev/null'
#=====================================================================================
alias src="clear && source ~/.bashrc"
为什么只在运行src
时弹出错误?
我是不是遗漏了一些明显的东西?
编辑: 我刚刚想起一个可能影响 Stuff 的细节:
我在 .bashrc
的最后一行激活了一个 anaconda 环境。我不知道这是否会导致问题,但我想我会提到它。
您的函数声明中需要 space。这就是为什么在该行报告语法错误的原因。
html () {
pandoc -f markdown -t html > /home/ciaran/Desktop/r.html
wait
firefox /home/ciaran/Desktop/r.html;
wait
sleep 5
rm /home/ciaran/Desktop/r.html;
}
请参阅此处进行清理。
print_pretty ()
{
stat -c$'%F\n%n' * | awk -vC0='3[1;34m' -vC1='3[00m' -vC2='3[1;32m' -vC3='3[1;36m' '/^directory/ {getline LEFT[++DC]; next} {getline RIGHT[++FC]} {for (i=1; i<=FC; i++) {if (system("[ -h " RIGHT[i] " ]") == 0) RIGHT[i]=C3 RIGHT[i]; if (system("[ -x " RIGHT[i] " ]") == 0) RIGHT[i]=C2 RIGHT[i]}} END {for (i=1; i<=(DC>FC?DC:FC); i++) printf "%-50s%s\n", C0 LEFT[i], C1 RIGHT[i]}'
}
# execute function first
print_pretty
# now make alias
alias l='print_pretty 2>/dev/null' #<-- sneaky ignore errors command here!
#=====================================================================================
html ()
{
pandoc -f markdown -t html > /home/ciaran/Desktop/r.html
wait
firefox /home/ciaran/Desktop/r.html;
wait
sleep 5
rm /home/ciaran/Desktop/r.html;
}
# call function
html
#=====================================================================================
alias src='clear && source ~/.bashrc'
以下是 tDarkCrystal 的答案带来的成果:
所以答案很简单...我将函数称为与别名相同的名称,所以它自己混淆了...
我将 html ()
更改为 htmlFunc ()
,现在可以使用了。
感谢 tDarkCrystal