Tôi nên học shell nào cho FreeBSD và Debian?


7

Tôi đã đọc nhiều bài báo nói rằng vỏ chính thức trong FreeBSD là tcsh, và trong Debian, nó dash. Tuy nhiên, khi tôi echo $shell(FreeBSD) hoặc envtrong Debian, nó nói rằng shell nằm cshtrong trường hợp đầu tiên hoặc bashtrong Debian.

Đây là trong cài đặt mới. Tôi đã thử nghiệm dưới tài khoản root và tài khoản người dùng bình thường. Ngoài ra, khi tôi tạo một tài khoản mới trong FreeBSD, tôi có 3 lựa chọn; sh, cshHoặc tcsh. Nếu tôi không có sự lựa chọn, cshlà mặc định cho tài khoản.

Vỏ chính thức, tiêu chuẩn theo các hệ thống đó là gì? Là nó tcshhoặc cshtrong FreeBSD? Là nó dashhay bashtrong Debian?

Có phải tôi làm điều gì đó sai? Hoặc là các bài viết và các trang web thông tin sai?

Tôi muốn tìm hiểu hai shell: một cho Debian và một cho FreeBSD, nhưng tôi không thể tìm thấy cái nào tôi nên học, vì nó không rõ cái nào là shell chính thức.

Ngoài ra, trong khi tìm kiếm loại vỏ nào tôi nên tìm hiểu, tôi đã tìm thấy cái này: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ Có phải ai đó không thích csh, hoặc chúng ta nên thực sự tránh csh?

Tôi đang sử dụng phiên bản Debian và FreeBSD mới nhất.

Tôi bắt đầu bị lạc với tất cả các tùy chọn shell này, tất cả chúng đều giống nhau đối với tôi (ngoại trừ cú pháp; ý tôi là tất cả chúng đều có vẻ giống nhau). Đó là lý do tại sao tôi muốn tìm hiểu chính thức.


Không có vỏ "chính thức", nhưng một số tốt hơn những cái khác.
Emil

Nói chung, khi cố gắng học một cái gì đó - đừng ngần ngại suy nghĩ cái gì tốt nhất để học, cái gì là cách tốt nhất để học nó, v.v. - chỉ cần làm nó (tích cực) và nó sẽ sớm trở thành (rất nhiều nhiều hơn) rõ ràng những gì để làm và làm thế nào để làm điều đó.
Emanuel Berg

Tìm hiểu một vỏ Bourne trông giống như bash (1) hoặc dash (1) nên làm. Một cái gì đó khoảng 99,56% [vâng, tôi mới làm điều đó, nhưng nó không quá xa sự thật] của các kịch bản shell được viết bằng ngôn ngữ sh (1) đáng kính, nó có phần giống với ngôn ngữ chung . More se như quy định cụ thể tiêu chuẩn POSIX rằng như các vỏ đó phải có sẵn.
vonbrand

Câu trả lời:


14

Không cần thiết phải sử dụng shell mặc định cho một hệ thống nhất định. Cả Debian và FreeBSD đều cung cấp một số shell khác nhau và hầu hết hoặc tất cả chúng đều có sẵn trên cả hai, được cài đặt sẵn hoặc dễ dàng cài đặt.

Xem ra để đặt tên. Nó không phải là hiếm /bin/cshkhi thực sự là tcsh, hoặc /bin/shlà bash hoặc ksh.

sh, shell Bourne, là shell Unix lâu đời nhất vẫn được sử dụng phổ biến. bashcó lẽ là dẫn xuất sh được sử dụng rộng rãi nhất; kshzshcũng phổ biến rộng rãi.

csh, vỏ C, được Bill Joy phát triển cho BSD. Nó có một số tính năng giúp sử dụng tương tác thuận tiện hơn sh(hoặc ít nhất là phiên bản cũ shđã tồn tại vào thời điểm đó). tcshcó nguồn gốc từ cshvà thêm rất nhiều tính năng mới, hầu hết trong số chúng nhằm mục đích sử dụng tương tác. Như bạn đã thấy bằng cách đọc csh.whynot , csh và tcsh có một số vấn đề khi sử dụng chúng để viết kịch bản trái ngược với tương tác.

Cá nhân, tôi bắt đầu với csh, sau đó chuyển sang tcsh khi nó trở nên có sẵn. Bây giờ tôi hiếm khi sử dụng csh cho kịch bản, thích sh hoặc bash (hoặc Perl cho bất cứ điều gì phức tạp hợp lý).

(Cập nhật, một vài năm sau: Tôi đã từ bỏ tcsh và bây giờ tôi sử dụng bash tương tác.)

Lời khuyên của tôi là chọn một shell duy nhất và học tốt nó, sử dụng nó trên cả FreeBSD và Debian. Nếu bạn chọn tcsh, tôi nghĩ bạn sẽ phải cài đặt nó trên Debian : sudo apt-get install tcsh. Nếu bạn chọn bash, tôi không biết liệu nó có được cài đặt sẵn trên FreeBSD hay không; nếu không, nó sẽ đơn giản như nhau để cài đặt nó.

Không cần thiết phải sử dụng cùng một vỏ tương tác và để viết kịch bản, nhưng nó có thể tránh một số nhầm lẫn và làm cho thời gian học ngắn hơn.

ksh có lẽ mạnh mẽ như bash, và zsh thậm chí còn mạnh hơn (và có rất nhiều tính năng tôi chưa bao giờ dành thời gian để tìm hiểu).

Tôi đề nghị bash, cho cả FreeBSD và Debian (và cho bất kỳ hệ thống nào giống Unix khác mà bạn có thể sử dụng) và cho cả sử dụng và viết kịch bản tương tác. Nhưng những lựa chọn khác là hoàn toàn hợp pháp, và một số có thể phù hợp với bạn hơn.


Làm thế nào để các bash khác nhau tương tác? Tôi hiểu rằng chúng không giống nhau cho kịch bản, nhưng để sử dụng chung?
dùng1115057

Điều đó có nghĩa là trong FreeBSD và Debian, tcsh / dash được sử dụng cho tập lệnh của hệ thống, và người dùng và root sử dụng csh / bash để tương tác?
dùng1115057

Bash khác với những gì? Cách thực sự duy nhất để trả lời đó là đọc tài liệu cho mỗi vỏ; Tôi không thể làm công lý cho họ trong một bình luận.
Keith Thompson

1
"Có nghĩa là ...?" -- Không cần thiết. Đối với Debian, tôi nghĩ các tập lệnh hệ thống thường được viết bằng sh hoặc bash; cho FreeBSD, tôi không biết. Nhưng miễn là các tập lệnh đó hoạt động chính xác, bạn không cần phải quan tâm đến cách chúng được viết (trừ khi bạn tự thay đổi chúng). Đối với Debian, shell tương tác của root được bash theo mặc định; Tôi không biết FreeBSD là gì, nhưng nếu bạn có quyền truy cập vào hệ thống, bạn có thể grep root /etc/passwdtìm hiểu. Mỗi người dùng sử dụng bất cứ thứ gì họ thích, sử dụng chshnếu cần thiết để thay đổi nó.
Keith Thompson

1
@EmanuelBerg: Shell C được gọi như vậy bởi vì cú pháp của nó tương tự như C - nhưng nó không thực sự gần như vậy. Tôi thấy bash trở nên nhất quán và mạnh mẽ hơn.
Keith Thompson
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.