PS1 proměnná prostředí by měl být nastaven na ~/.bashrc pro bash shell, protože to je inicializační soubor, který se čte pro interaktivní shellové relace.
Všimněte si, že tato proměnná je proměnná shellu , nikoli proměnná prostředí (nedává smysl nechat podřízené procesy zdědit její hodnotu a používá ji pouze aktuální shell). Proto není nutné jej exportovat pomocí export .
Související:
- Jaký je účel .bashrc a jak funguje?
Neměli byste spouštět bash z libovolného spouštěcího souboru shellu. Spuštění konkrétního shellu z ~/.profile (nebo odpovídající soubor související s vaším přihlašovacím shellem) může být zaručen, pokud vám systém, na kterém běžíte, neumožňuje změnit váš přihlašovací shell. Je třeba dávat pozor, aby ne spusťte druhý shell, pokud je to shell, který již spouští soubor, nebo můžete skončit v nekonečné smyčce.
exec kód, který přidáte do ~/.bash_profile by nikdy neměl být potřeba. Předpokládám, že je to způsob, jak získat ~/.bashrc k analýze (spustí interaktivní shell a interaktivní bash shelly čtou ~/.bashrc ). Lepší způsob, jak to udělat, by bylo nechat jeden ze souborů zdroj druhého, například pomocí tohoto v ~/.bash_profile :
if [[ -f $HOME/.bashrc ]]; then
source "$HOME/.bashrc"
fi
Poté nastavte PS1 v ~/.bashrc (nemělo by být nutné se dotýkat HOME nebo TERM ).
Další věc, kterou příkaz dělá, je vyčistit všechny ostatní proměnné prostředí pomocí env -i . Pokud nemáte velmi konkrétní důvody abyste to udělali, neměli byste to dělat ze svých běžných spouštěcích souborů shellu.
Abych citoval z manuálové stránky bash:
When bash is invoked as an interactive login shell, or as a non-interactive
shell with the --login option, it first reads and executes commands from the
file /etc/profile, if that file exists. After reading that file, it looks
for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads
and executes commands from the first one that exists and is readable. The
--noprofile option may be used when the shell is started to inhibit this
behavior.
When a login shell exits, bash reads and executes commands from the file
~/.bash_logout, if it exists.
When an interactive shell that is not a login shell is started, bash reads
and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files
exist. This may be inhibited by using the --norc option. The --rcfile file
option will force bash to read and execute commands from file instead of
/etc/bash.bashrc and ~/.bashrc.
Velmi tedy záleží na tom, jak shell spustíte.
- Pokud chcete mít svůj
PS1aktivní ve všech přihlášeních shelly (např. přessu - <user>nebo při vzdáleném přihlášení přesssh), vložte jej do profilu . - Pokud chcete mít svůj
PS1aktivní ve všech nepřihlášených shelly (např. jednoduché otevření jiného terminálu ve vašem desktopovém prostředí), vložte do bashrc . - Pokud ji chcete mít aktivní v obou případech, budete ji muset vložit do obou souborů nebo (což některé verze Linuxu dělají alespoň v případě celosystémového /etc/profile a /etc/bash.bashrc ), zdroj .bashrc v .profilu .
PS1 by měl být v .bashrc . Můžete to také nastavit v .profile .
Zdroje Debianu .bashrc odtud:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi