====== Přechod z tcsh na bash ======
===== Odkazy =====
* [[http://en.wikipedia.org/wiki/Comparison_of_computer_shells]]
===== Syntaxe =====
Na co dát pozor při psaní skriptů:
==== Proměnné ====
''tcsh:''
setenv VARIABLE value
''bash:''
export VARIABLE=value
==== Přesměrování výstupu ====
''tcsh:''
( command > x.out ) >& x.err
''bash:''
command > x.out 2> x.err
==== Podmínky a smyčky ====
Konstrukce, které řídí běh programu, mají v obou shellech odlišnou syntaxi.
''tcsh:''
foreach i (apple pear orange)
echo cp ${i}s.txt my_$i.txt
end
if (-f file.txt) then
echo 'Oh yes!'
endif
''bash:''
for i in apple pear orange
do echo cp ${i}s.txt my_$i.txt
done
if [[ -f file.txt ]] ; then
echo 'Oh yes!'
fi
===== Nevyřešené problémy =====
* V bashi mi nefungoval příkaz alias. Čím ho nahradím?
* alias je builtin, ten by fungovat opravdu měl (např. ''alias ls='ls -F --color=au' '')
* V tcsh jsem zvyklý, že ALT+P mi v historii projde příkazy, které začínají stejně, jako to, co už jsem napsal na aktuální příkazový řádek. Jak se to udělá v bashi?
* v ''.inputrc'' si na nějakou klávesu nabinduješ ''history-search-backward'', myslím, že defaultně to nikde není
* Chci, aby můj prompt byl v tvaru ''9:05 zen:/ha/home/zeman> ''. V tcsh mi trvalo několik týdnů, než jsem přišel na to, jak to udělat, ale od té doby už to spokojeně používám přes 10 let. V bashi to chci určitě stejně.
* Stačí nastavit proměnnou ''PS1'', zřejmě na něco jako ''"\A ${HOSTNAME%%.*}:\w>"''
* S tím souvisí, že ''pwd'' se chová jinak v tcsh a jinak v bashi. V tcsh se dozvím skutečnou cestu (tj. všelijaké symbolické linky jsou odmaskované), například vidím, že ''/home/zeman'' ve skutečnosti vede na ''/ha/home/zeman''. Pwd v bashi mi ale pořád říká ''/home/zeman''. Nejraději bych uměl na požádání vyvolat kterékoli z těchto chování, ale rozhodně bych rád měl nějaký způsob, jak skutečnou cestu zjistit.
* ''readlink -f''