Terminal, Prompt berubah menjadi "-Bash-4.2" dan warna hilang

8

Biasanya terminal prompt saya

username place$

sekarang hanya menunjukkan

bash-4.2$

dan semua pengaturan warna telah hilang (pada profil terminal saya memiliki skema warna yang sama, tetapi tidak menunjukkan warna)

Saya tidak tahu apa yang terjadi (dan saya tidak tahu bagaimana mencari ini).

Berubah dari nol, saya bekerja dengan eclipse dan maven, membuka terminal baru dan terminal baru tidak memiliki warna.

Catatan: Saya tidak punya file ~ / .bashrc, tapi saya punya ~ / .bash_profile.

lcjury
sumber
Prompt diatur oleh variabel PS1, di sini Anda dapat membaca lebih lanjut tentang ini, ada juga berbagai contoh prompt berwarna
RSFalcon7
Apakah ini terjadi 1) Hanya ketika Anda masuk pada konsol, 2) Hanya ketika Anda membuka terminal GUI baru, 3) Keduanya 1 dan 2? Jika Anda tidak yakin tentang # 1, beralihlah ke VT dan masuk, atau coba bash -l.
goldilocks
@ TAFKA'goldilocks 'keduanya, jika saya menggunakan bash -l warna kembali, tetapi prompt masih di "bash-4.2 $"
lcjury
Jika jawaban saya tidak berfungsi, posting output dari echo $PS1dalam versi login dengan warna.
goldilocks

Jawaban:

10

Variabel prompt $PS1mungkin tidak disetel, jadi bawaan bawaan \s-\v\$digunakan.

Ketika bash dijalankan secara interaktif, ia mengambil file konfigurasi, biasanya salah satu ~/.bashrcatau ~/.bash_profile, menganggapnya ada, dan ini adalah bagaimana prompt yang lebih menarik diatur. Dari man bash:

DOA

[...] Ketika bash dipanggil sebagai shell login interaktif, atau sebagai shell non-interaktif dengan opsi --login, bash pertama kali membaca dan mengeksekusi perintah dari file / etc / profile, jika file itu ada. Setelah membaca file itu, ia mencari ~ / .bash_profile, ~ / .bash_login, dan ~ / .profile, dalam urutan [...]

[...] Ketika shell interaktif yang bukan shell login dimulai, bash membaca dan mengeksekusi perintah dari ~ / .bashrc, jika file itu ada.

Tidak memiliki set prompt Anda dapat terjadi dalam dua konteks yang berbeda, shell login dan shell non-login. Jika Anda menggunakan manajer tampilan untuk masuk langsung ke GUI, Anda tidak menemukan shell login kecuali Anda beralih ke konsol virtual (via, mis. CtrlAlt+ F1 ke F6). Namun, Anda dapat menguji profil login pesta Anda di GUI dengan membuka shell login baru secara eksplisit: bash -l.

Masalah terjadi dengan shell non-login

Jika masalah terjadi dengan, misalnya, terminal GUI normal, mungkin salah Anda ~/.bashrchilang, atau telah diedit untuk mengecualikan sumber file global, mungkin /etc/bashrc.

  • Jika ~/.bashrctidak ada, harus ada yang /etc/skel/.bashrcdigunakan untuk membuatnya untuk pengguna baru. Cukup salin file itu ke direktori home Anda, dan prompt default Anda akan kembali untuk shell baru berikutnya yang Anda buka.

  • Jika ~/.bashrcmemang ada, periksa untuk melihat apakah ada garis di suatu tempat yang sumbernya /etc/bashrc:

    . /etc/bashrc
      -OR-
    source /etc/bashrc

    Jika tidak, periksa apakah file itu ada (seharusnya, setidaknya di sebagian besar distro linux) dan tambahkan baris seperti itu ke file Anda ~/.bashrc.

Masalah terjadi dengan shell login

Jika masalah terjadi dengan shell login dan juga shell non-login, masalahnya mungkin sama seperti di atas. Jika itu terjadi hanya dengan shell login, Anda tidak memiliki salah satu file yang disebutkan untuk shell login di bawah kutipan INVOCATION di atas, atau mereka tidak sumber Anda ~/.bashrc, yang normal pada kebanyakan distro linux. Jika tidak ada file-file itu ada, buat ~/.bash_profiledengan ini di dalamnya:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

Ini memungkinkan Anda, untuk sebagian besar, menyimpan konfigurasi Anda dalam satu file ( ~/.bashrc).


Jika apa pun yang Anda lakukan, Anda tidak bisa mendapatkan prompt kembali, Anda dapat membuatnya dan melakukannya seperti ~/.bashrcini:

if [ "$PS1 ]; then
    PS1= .... # see below
fi

Ini karena $ PS1 disetel dan memiliki nilai default untuk shell interaktif, dan Anda tidak ingin mengaturnya karena hal lain mungkin menggunakan nilai ini untuk menentukan apakah ini adalah lingkungan interaktif.

Halaman bash man berisi bagian PROMPTING yang menjelaskan cara mengatur prompt dengan fitur dinamis seperti nama pengguna Anda dan direktori kerja saat ini, yang akan menjadi, misalnya ,:

PS1="\u \w:"

Ada panduan untuk menggunakan warna di sini . Perhatikan fakta bahwa Anda harus menyertakan karakter yang tidak dicetak dalam \[dan \](ada diskusi tentang ini di akhir jawaban tentang warna).

goldilocks
sumber
Terima kasih TAFKA !, sebagian besar dari sekedar jawaban saya belajar sesuatu yang baru :)!
lcjury
1

Cukup tempelkan ini di ~ / .bashrc dan ~ / .bash_profile sebagai root pada pengguna yang terpengaruh.

# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi

Aziz Zoaib
sumber
0

Harus meng-upgrade Cygwin bash untuk alasan keamanan.

bash lama = 4.1.10 (4) -release (i686-pc-cygwin) sekitar tahun 2009

$ echo $PS1

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

bash baru = 4.4.12 (3) -release (i686-pc-cygwin) sekitar 2016

Untuk mendapatkan tampilan dan nuansa yang sama persis harus ditambahkan ke .bashrc:

#

GREEN="\[$(tput setaf 2)\]"

YELLOW="\[$(tput setaf 3)\]"

RESET="\[$(tput sgr0)\]"

PS1="\n${GREEN}\u@\h ${YELLOW}\w${RESET}\n$ "

cd $HOME

#

catatan: termasuk cd $HOME

Randy Sp
sumber