Bash: Có bao nhiêu phiên lồng nhau sâu?


9

Giả sử tôi bắt đầu một bashshell,
... và sau đó là một bashphiên khác từ trong shell đó,
... và sau đó là một bashphiên khác từ trong phiên đó,
... và sau đó là một bashphiên khác từ trong phiên đó,
... (lần N), v.v.

Để thoát tất cả N phiên tôi phải gõ exitN lần.

Làm cách nào để biết được tôi được lồng sâu như thế nào trong bất kỳ phiên bash nào?

Lý tưởng nhất là tôi đang tìm kiếm một số biến môi trường tương tự như $STYcho các phiên màn hình.

Câu trả lời:


16

Sử dụng SHLVL. Từ man bash:

SHLVL  Incremented by one each time an instance of bash is started.

Thí dụ :

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3

Đây là tốt, nhưng tôi đã nhận thấy một chút vấn đề với thiết lập của tôi: - .xinitrc của tôi bắt đầu một vỏ như một quá trình thường xuyên, nhưng khác sử dụng exec(để khi đóng cửa bến này, XSession toàn bộ đầu). $SHLVLtạo ra hai số khác nhau cho các thiết bị đầu cuối này. Có một biến môi trường cụ thể hơn vỏ?
tetris11

$BASH_SUBSHELLnhìn đầy hứa hẹn, nhưng không cung cấp.
tetris11

1
@ tetris11Yeah..có cách hoạt SHLVLđộng..kiểm tra giải pháp này nếu nó phù hợp ..
heemayl

1
Ah, tất nhiên - Tôi có thể tự thiết lập SHLVL=0trong ~/.xinitrc. Rực rỡ, cảm ơn
tetris11
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.