Tại sao $ là biểu tượng mặc định cho trình bao người dùng và # biểu tượng mặc định cho trình bao gốc?


10

Vận hành shell bash tiêu chuẩn trên máy chủ, dấu nhắc PS1 mặc định kết thúc bằng $ cho người dùng không root và # cho root.

I E:

ubuntu@server:~$ sudo su
root@server:/home/ubuntu#

Tại sao lại thế này?


Lịch sử hay trực tiếp hơn?
Jeff Schaller

Câu trả lời:


16

Trong lịch sử, shell Bourne ban đầu / bin / sh sẽ sử dụng $như lời nhắc thông thường và #cho lời nhắc người dùng root (và csh sẽ sử dụng %). Điều này làm cho nó khá dễ dàng để biết bạn có đang chạy như siêu người dùng hay không.

# cũng là nhân vật bình luận, vì vậy bất cứ ai nhập dữ liệu một cách mù quáng sẽ không chạy bất kỳ lệnh thực sự nào.

Các shell hiện đại hơn (ví dụ: ksh, bash) tiếp tục sự khác biệt này $#mặc dù nó ít quan trọng hơn khi bạn có thể đặt các giá trị phức tạp hơn như tên người dùng, tên máy chủ, thư mục :-)


Bạn có thể đưa ra một ví dụ về việc làm thế nào #là nhân vật bình luận ngăn người khác chạy các lệnh thực sự nếu họ nhập lại dữ liệu một cách mù quáng?
John Gowers

6
Điều gì xảy ra nếu bạn cắt dòng hoàn chỉnh # reboot- trả lời ... không có gì, vì đó #là một nhận xét.
Stephen Harris

9

Truyền thống.

Tiêu chuẩn POSIX nói (nhấn mạnh của tôi):

PS1

Biến này được sử dụng cho lời nhắc tương tác. Trong lịch sử, "siêu người dùng" đã có dấu nhắc '#'. Vì các đặc quyền không bắt buộc phải là nguyên khối, nên rất khó xác định đặc quyền nào sẽ gây ra dấu nhắc thay thế. Tuy nhiên, một người dùng đủ mạnh nên được nhắc nhở về sức mạnh đó bằng cách có một dấu nhắc thay thế.

Xem thêm câu trả lời này cho câu hỏi gần như tương tự trên diễn đàn SuperUser.


Để thêm, điều này có thể được tìm thấy trong Cơ sở lý luận> C. Cơ sở lý luận cho Shell & Tiện ích> 2. Ngôn ngữ lệnh Shell; Tôi chỉ cần tìm một tài liệu tham khảo cho nó cho một cái gì đó khác :)
forapes

1
@ xin cảm ơn. Tôi đã thêm một liên kết thích hợp bây giờ.
Kusalananda
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.