it-swarm.dev

Kde je .bash_profile?

Chci do svého souboru .bash_profile Vložit nové aliasy, ale tento soubor nemůžu najít.
Kde to má být?

51
Shira

Je to skrytý soubor umístěný ve vaší domovské složce:

~/.bash_profile

(~ se rozšíří do vašeho domovského adresáře. Pokud je vaše uživatelské jméno user, bude výsledek: /home/user/.bash_profile).

Protože se jedná o skrytý soubor, musíte jej zviditelnit. Chcete-li to provést v aplikaci Nautilus, přejděte do nabídky "Zobrazit" a zaškrtněte "Zobrazit skryté soubory" (nebo stiskněte zástupce Ctrl + H).

Pokud používáte Kubuntu s Dolphinem, musíte stisknout Ctrl + . přepínat viditelnost souborů.

47
Lekensteyn

~/.bash_profile není správné místo pro vkládání aliasu a funkcí. Měli by jít do ~/.bashrc. Vysvětlení viz http://mywiki.wooledge.org/DotFiles .

14
geirha

Na Ubuntu obvykle nemáte .bash_profile, ani byste neměli tento soubor obvykle vytvářet. Jak říká jpezz , bylo by to ve vašem domovském adresáři v systému Ubuntu, což je zkratka ~ a můžete ji tam vytvořit. Ale pokud tak učiníte, měli byste být opatrní, protože to zabrání bash v automatickém spouštění příkazů v .profile - což je téměř jistě ano mít.

Když bashběží jako přihlašovací prostředí , ve WSL nebo jinak1, spustí první z .bash_profile, .bash_login nebo .profile, který existuje ve vašem domovském adresáři. Pokud máte bash- specifické příkazy, které chcete spustit při přihlášení - ale pouze když bash je vaše Shell - můžete je vložit do .bash_profile. Pouhá existence .bash_profile By však zabránila použití .profile.

Takže byste chtěli zdroj .profile Z .bash_profile, Za předpokladu, že chcete, aby se tyto příkazy také spouštěly, což byste téměř vždy chtěli. Dalo by se to provést zadáním tohoto příkazu do .bash_profile:

. ~/.profile

(Někteří čtenáři mohou být zvyklí vidět to napsané jako . "$HOME/.profile", Když se objeví ve spouštěcím skriptu. To je vždy v pořádku - a můžete to raději použít pro příkazy, které potřebují pracovat na granátech jiných než bash také, pokud potřebujete ubytovat extrémně staré skořápky, které nepodporují standardní funkce , což - dobře, to nepotřebujete. V každém případě bash vždy podporuje rozšíření vlnovky a bod .bash_profile je takový, že pouze bash spouští příkazy, takže . ~/.profile je v pořádku.)

Vestavěný . Zdrojový soubor, to znamená, že spouští všechny příkazy ze souboru v aktuálním prostředí. Otevřete interaktivní bash Shell a spusťte help . Pro více informací.

Důvod, proč na Ubuntu obvykle nemáte .bash_profile, I když máte bash- specifické příkazy, které chcete spustit při přihlášení je to ve výchozím nastavení uživatelé Soubory '.profile Obsahují kód, který kontroluje, zda aktuální Shell je bash, a potom způsobí spuštění takových příkazů.

Existuje další odpověď na otázku, kde jsou soubory jako .profile Nebo .bash_profile. Výchozí verze těchto souborů existují v adresáři /etc/skel. Soubory v tomto adresáři jsou zkopírovány do domovských adresářů Ubuntu, když jsou uživatelské účty vytvořeny v systému Ubuntu - včetně uživatelského účtu, který vytvoříte v rámci instalace Ubuntu. Pokud se podíváte do tohoto adresáře, všimnete si, že existuje soubor s názvem .profile - stejně jako některé další soubory, jako je .bashrc - ale neexistuje žádný soubor s názvem .bash_profile. To je důvod, proč - nebo skutečně jak - v domovském adresáři Ubuntu neexistuje žádný .bash_profile, Pokud jste jej sami nevytvořili.


Nakonec byste neměli vkládat aliasy do .profile Vůbec, ani pro ně není .bash_profile Dobré místo, jako geirha správně říká . Je to proto, že budete chtít, aby vaše aliasy fungovaly v interaktivních shellech, ať už jsou nebo nejsou přihlašovací. Místo toho definujte své aliasy v .bashrc Nebo lépe, .bash_aliases (Jako host Boeroe poukáže) ), což jsou výchozí zdroje .bashrc. Viz Jak vytvořím permanentní alias Bash?

Výchozí soubor .profile Zkontroluje, zda používáte prostředí bash Shell a zdroj .bashrc, Pokud jste:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Mezitím bude výchozí .bashrc Ukončen nahoře, aniž by cokoli provedl, pokud by byl spuštěn v neinteraktivním prostředí, takže příkazy v něm nebudou spuštěny, pokud budou získány zdrojem .profile V neinteraktivní přihlašovací Shell a další temnější scénáře2:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Pokud tedy vložte aliasy do .bashrc Nebo do .bash_aliases, dostanete je také pro interaktivní přihlašovací skořepiny (kde se používá .profile) jako interaktivní prostředí bez přihlášení (kde se používá .bashrc). To je to, co chcete. Jednoduše nedávejte nic nad kontrolu interaktivity, pokud opravdu opravdu nevíte, co děláte.


1 Tato odpověď byla původně napsána pro otázka související s WSL , ale tato otázka byla uzavřena jako duplikát a tato odpověď platí i zde, takže jsem trochu rozšířil a místo toho ji zde zveřejnil.

2 Když bash zjistí, že pravděpodobně běží jako počáteční prostředí vzdáleného přihlášení, které není přihlašovací prostředí - například při použití ssh pro spuštění jediného příkazu na vzdáleném počítači - spustí příkazy z .bashrc. (Viz 6.2 Startovací soubory Bash v GNU Bash manuál .)

6
Eliah Kagan

Je užitečné vložit všechny vaše aliasy do ~/.bash_aliases v domovském adresáři uživatele. To je to, co se navrhuje v ~/.bashrc soubor v komentářích.

5
guest boeroe

jen chtěli zazvonit - že i soubory jsou v prohlížeči skryty, můžete je všechny otevřít, i když zadáte název souboru. Pokud například napíšete do adresního řádku delfína /home/<user>/.bashrc, otevře soubor s výchozím editorem bez přepínání některých souborů.

Jiným způsobem je pouze otevřít svůj oblíbený editor a jednoduše zadat název souboru.

Vidím, že nejvýhodnějším způsobem, jak zacházet se skrytými soubory, je ukázat, že neukazují, jen zvyšují šum, kterému lze zabránit.

A aliasy by měly jít do .bashrc, jak napsal geirha.

0
Osis