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
PS1
aktivní 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
PS1
aktivní 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