PS1
variabel shell harus diatur dalam ~/.bashrc
untuk bash
shell karena itu adalah file inisialisasi yang dibaca untuk sesi shell interaktif.
Perhatikan bahwa variabel ini adalah variabel shell , bukan variabel lingkungan (tidak masuk akal membiarkan proses turunan mewarisi nilainya, dan hanya shell saat ini yang menggunakannya). Oleh karena itu tidak perlu diekspor dengan export
.
Terkait:
- Apa tujuan .bashrc dan bagaimana cara kerjanya?
Anda tidak perlu memulai bash
dari salah satu file startup shell. Memulai shell tertentu dari ~/.profile
(atau file terkait yang terkait dengan shell login Anda) mungkin diperlukan jika sistem yang Anda jalankan tidak memungkinkan Anda untuk mengubah shell login Anda. Harus berhati-hati untuk tidak mulai shell lain jika itu adalah shell yang sudah mengeksekusi file, atau Anda mungkin berakhir dalam semacam loop tak terbatas.
exec
kode yang Anda tambahkan ke ~/.bash_profile
Anda seharusnya tidak pernah dibutuhkan. Saya kira itu adalah cara untuk mendapatkan ~/.bashrc
untuk diuraikan (ini memulai shell interaktif, dan bash
interaktif shell membaca ~/.bashrc
). Cara yang lebih baik untuk melakukannya adalah memiliki salah satu sumber file yang lain, misalnya menggunakan ini di ~/.bash_profile
:
if [[ -f $HOME/.bashrc ]]; then
source "$HOME/.bashrc"
fi
Kemudian atur PS1
di ~/.bashrc
(seharusnya tidak perlu menyentuh HOME
atau TERM
).
Hal lain yang dilakukan perintah adalah membersihkan semua variabel lingkungan lainnya menggunakan env -i
. Kecuali jika Anda memiliki alasan yang sangat spesifik untuk melakukan ini, Anda tidak boleh melakukannya dari file startup shell biasa.
Mengutip dari halaman manual 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.
Jadi sangat tergantung pada bagaimana Anda memulai shell.
- Jika Anda ingin memiliki
PS1
Anda aktif di semua login shell (misalnya melaluisu - <user>
atau saat login jarak jauh melaluissh
), letakkan di profil . - Jika Anda ingin memiliki
PS1
Anda aktif di semua non-login shell (mis. hanya membuka terminal lain di lingkungan desktop Anda), masukkan ke dalam bashrc . - Jika Anda ingin mengaktifkannya dalam kedua kasus, Anda harus memasukkannya ke dalam kedua file, atau (yang dilakukan oleh sebagian Linux setidaknya dalam kasus /etc/profile dan /etc/bash.bashrc ), sumber .bashrc di .profile .
PS1
harus dalam .bashrc
. Anda juga bisa mengaturnya di .profile
.
Sumber Debian .bashrc dari sana:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi