簡體   English   中英

sourcing.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。

據我所知,function 沒有錯誤,但無論如何,這里是代碼:

#!/bin/sh

#[...] Regular aliases for ls and stuff
#[...] Other Stuff that is irrelevant

html ()
{
pandoc -f markdown -t html $1 > /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 的細節:我激活了 anaconda 環境作為.bashrc的最后一行。 我不知道這是否會導致問題,但我想我會提到它。

您的 function 聲明中需要一個空格。 這就是在該行上報告語法錯誤的原因。

html () {
pandoc -f markdown -t html $1 > /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='\033[1;34m' -vC1='\033[00m' -vC2='\033[1;32m' -vC3='\033[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 $1 > /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 的答案所帶來的結果:

所以答案很簡單……我把function和別名同名,所以自己搞糊塗了……

我將html ()更改為htmlFunc ()現在它可以工作了。

謝謝 tDarkCrystal

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM