Terminal, Prompt đổi thành Elite -Bash-4.2 và mất màu


8

Thông thường thiết bị đầu cuối của tôi là

username place$

bây giờ nó chỉ hiển thị

bash-4.2$

và tất cả các cài đặt màu đã bị mất (trên cấu hình thiết bị đầu cuối tôi có cùng tông màu, nhưng nó không hiển thị màu)

Tôi không có bất kỳ ý tưởng nào về những gì xảy ra (và tôi không biết làm thế nào để tìm kiếm điều này).

Nó thay đổi từ không có gì, tôi đang làm việc với nhật thực và maven, mở một thiết bị đầu cuối mới và thiết bị đầu cuối mới không có màu sắc.

Lưu ý: Tôi không có tệp ~ / .bashrc, nhưng tôi có ~ / .bash_profile.


Lời nhắc được đặt bởi biến PS1, tại đây bạn có thể đọc thêm về điều này, cũng có nhiều ví dụ khác nhau về lời nhắc màu
RSFalcon7

Điều này có xảy ra 1) Chỉ khi bạn đăng nhập trên bảng điều khiển, 2) Chỉ khi bạn mở thiết bị đầu cuối GUI mới, 3) Cả 1 và 2? Nếu bạn không chắc chắn về # 1, hãy chuyển sang VT và đăng nhập hoặc thử bash -l.
goldilocks

@ TAFKA'goldilocks ', nếu tôi sử dụng bash -l các màu sẽ quay trở lại, nhưng lời nhắc vẫn ở "bash-4.2 $"
lcjury

Nếu câu trả lời của tôi không hoạt động, hãy đăng kết quả đầu ra từ echo $PS1phiên bản đăng nhập với màu sắc.
goldilocks

Câu trả lời:


10

Biến nhắc $PS1có thể không được đặt, vì vậy mặc định tích hợp \s-\v\$được sử dụng.

Khi bash khởi động tương tác, nó sẽ tạo một tệp cấu hình, thường là ~/.bashrchoặc ~/.bash_profile, giả sử chúng tồn tại và đây là cách thiết lập dấu nhắc fancier. Từ man bash:

LIÊN QUAN

[...] Khi bash được gọi dưới dạng shell đăng nhập tương tác hoặc dưới dạng shell không tương tác với tùy chọn --login, trước tiên, nó sẽ đọc và thực thi các lệnh từ tệp / etc / profile, nếu tệp đó tồn tại. Sau khi đọc tệp đó, nó sẽ tìm ~ / .bash_profile, ~ / .bash_login~ / .profile, theo thứ tự đó [...]

[...] Khi một vỏ tương tác không phải là vỏ đăng nhập được bắt đầu, bash đọc và thực thi các lệnh từ ~ / .bashrc, nếu tệp đó tồn tại.

Không có bộ nhắc nhở của bạn có thể xảy ra trong hai bối cảnh khác nhau, vỏ đăng nhập và vỏ không đăng nhập. Nếu bạn sử dụng trình quản lý hiển thị để đăng nhập trực tiếp vào GUI, bạn sẽ không gặp phải các vỏ đăng nhập trừ khi bạn chuyển sang bảng điều khiển ảo (thông qua, ví dụ CtrlAlt+ F1 đến F6). Tuy nhiên, bạn có thể kiểm tra hồ sơ đăng nhập bash của mình trong GUI bằng cách mở một vỏ đăng nhập mới một cách rõ ràng : bash -l.

Sự cố xảy ra với shell không đăng nhập

Nếu sự cố xảy ra với, ví dụ, các thiết bị đầu cuối GUI bình thường, thì có thể là do bạn ~/.bashrcbị thiếu hoặc có thể đã được chỉnh sửa để loại trừ việc tìm nguồn của một tệp toàn cầu /etc/bashrc.

  • Nếu ~/.bashrckhông tồn tại, cần có một ứng /etc/skel/.bashrcdụng để tạo nó cho người dùng mới. Chỉ cần sao chép tệp đó vào thư mục chính của bạn và lời nhắc mặc định của bạn sẽ quay lại cho trình bao mới tiếp theo bạn mở.

  • Nếu ~/.bashrccó tồn tại, kiểm tra xem nếu có một dòng ở đâu đó mà nguồn /etc/bashrc:

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

    Nếu không, hãy kiểm tra xem tệp đó có tồn tại không (ít nhất là trên hầu hết các bản phân phối linux) và thêm một dòng như vậy vào ~/.bashrc.

Sự cố xảy ra với shell đăng nhập

Nếu sự cố xảy ra với các shell đăng nhập cũng như các shell không đăng nhập, thì vấn đề có thể giống như trên. Nếu nó chỉ xảy ra với các shell đăng nhập, thì bạn không có một trong các tệp được đề cập cho các shell đăng nhập theo trích dẫn HÓA ĐƠN ở trên, hoặc chúng không lấy nguồn của bạn ~/.bashrc, điều này là bình thường trên hầu hết các distro linux. Nếu không có tệp nào trong số đó tồn tại, hãy tạo tệp ~/.bash_profilenày trong đó:

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

Điều này cho phép bạn, trong hầu hết các phần, giữ cấu hình của bạn trong một tệp ( ~/.bashrc).


Nếu không có vấn đề gì bạn không thể lấy lại lời nhắc, bạn có thể tạo một cái và đặt nó ~/.bashrctheo cách này:

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

Điều này là do $ PS1 được đặt và có giá trị mặc định cho các vỏ tương tác và bạn không muốn đặt nó vì các thứ khác có thể sử dụng giá trị này để xác định xem đây có phải là môi trường tương tác hay không.

Trang bash man chứa phần KHUYẾN MÃI mô tả cách đặt lời nhắc với các tính năng động như tên người dùng và thư mục làm việc hiện tại của bạn, ví dụ:

PS1="\u \w:"

Có một hướng dẫn sử dụng màu sắc ở đây . Hãy chú ý đến thực tế là bạn nên kèm theo các ký tự không được in \[\](có một cuộc thảo luận về điều này ở cuối câu trả lời về màu sắc).


Cảm ơn TAFKA!, Hầu hết chỉ là một câu trả lời tôi đã học được điều gì đó mới :)!
lcjury

1

Chỉ cần dán cái này vào ~ / .bashrc và ~ / .bash_profile với quyền root trên người dùng bị ảnh hưởng.

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


0

Phải nâng cấp bash Cygwin vì lý do bảo mật.

bash cũ = 4.1.10 (4) -release (i686-pc-cygwin) vào khoảng năm 2009

$ echo $PS1

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

bash mới = 4.4.12 (3) -release (i686-pc-cygwin) vào khoảng năm 2016

Để có được giao diện chính xác giống như vậy và phải thêm vào .bashrc:

#

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

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

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

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

cd $HOME

#

lưu ý: bao gồm cd $HOME

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.