Một người sđd bên trong thế nào


10

Tôi thường nhận thức rõ về nội dung của $-. Trên một CentOS gần đây tôi nhận được:

[grochmal@orion ~]$ echo $-
himBH

hmBHlà tất cả các tùy chọn từ seticó nghĩa là vỏ của tôi tương tác.

Tuy nhiên, trên Arch Linux của tôi, tôi đã nhận được:

[grochmal@haps ~]$ echo $-
himBHs

Tôi không thể tìm thấy bất cứ điều gì hữu ích trong man bashset -scho tôi một lỗi. Điều đó có nghĩa là sgì?

Câu trả lời:


13

Các -stùy chọn là tiếng gọi bash bắt đầu với -s, mà có nghĩa là "nguồn lệnh từ 'tiêu chuẩn trong' Từ hướng dẫn.:

-s Nếu tùy chọn -s có mặt hoặc nếu không còn đối số sau khi xử lý tùy chọn, thì các lệnh được đọc từ đầu vào tiêu chuẩn. Tùy chọn này cho phép các tham số vị trí được đặt khi gọi trình bao tương tác.

Nó rất dễ dàng để kiểm tra:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

Bắt đầu một vỏ mới cho tất cả các phiên bản bash trước đó không đặt tùy chọn đó theo mặc định:

$ b32sh -li
$ echo $-
himBH

Nhưng đó là trong bash 4.4:

$ b44sh -li
$ echo $-
himBHs

Và phần thứ hai giải thích lý do tại sao tôi có được điều đó trên Arch. Giá trị CentOS của tôi cho BASH_VERSIONlà 4.2.46 (1) - miễn phí trong khi trên Arch là 4.4.5 (1) - miễn phí.
hóa dầu
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.