Pokouším se porozumět tomuto kódu:
if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Nejsem si jistý co přesně znamená -f.
Odpověď
Příslušná manuálová stránka, která to zkontroluje, je stránka samotného prostředí, bash
, protože -f
je funkce, kterou poskytuje shell, je integrována do bash.
V mém systému (CentOS 7), pokrývá to skvělá stránka. Soubor grep
nemusí u jiných distribucí poskytovat stejné výsledky. Pokud však spustíte man bash
a poté vyhledáte „-f“, mělo by to poskytnout požadované výsledky.
$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $
Odpověď
Stručně řečeno, část kódu vygeneruje soubor /etc/bashrc
, pokud existuje, a existence je ověřena příkazem [
, jehož -f
je operátor / parametr.
if...then...else...fi
příkaz ve skriptování prostředí vyhodnotí stav ukončení příkazů – 0 při úspěchu. Je správné udělat něco takového:
if ping -c 4 google.com; then echo "We have a connection!" fi
Příkaz je ve vašem případě [
který je také známý jako test
příkaz. Takže je to naprosto platné
if test -f /etc/bashrc; then . /etc/bashrc fi
The -f příznak ověří dvě věci: zadaná cesta existuje a je běžným souborem. Pokud /etc/bashrc
ve skutečnosti je adresář nebo chybí, test by měl vrátit nenulový stav ukončení, aby signalizoval selhání signálu.
Tento příkaz byl původně samostatným příkazem, který není část vestavěných příkazů shellu. V dnešní době je většina shellů podobných Bourneovi jako vestavěný, a právě to shell použije.
Na okraj se /etc/bashrc
jeví jako zbytečný soubor navíc, který používá váš administrátor nebo původní autor fragmentu kódu. Existuje /etc/bash.bashrc
, který je určen jako celosystémový soubor rc pro bash, takže by se dalo očekávat, že bude použito.
Viz také: