Tôi đang chạy trên cái vỏ nào?


39

Khi tôi chạy echo $SHELLđầu ra /bin/tcshcó nghĩa là tôi đang chạy tcshshell. Nhưng ví dụ khi tôi ban hành lệnh sau

alias emacs 'emacs -nw' 

Tôi nhận được lỗi sau đây:

bash: alias: emacs: not found
bash: alias: emacs -nw: not found

và khi tôi phát hành alias emacs="emacs -nw"nó chạy tốt!

Điều này gây nhầm lẫn vì tôi đang chạy tcshnhưng các lệnh được diễn giải bởi bash.

Điều gì có thể là lý do?


tcsh/cshcó vỏ hiện tại của nó trong$shell
HongboZhu

Câu trả lời:


48

$SHELLkhông nhất thiết phải là vỏ hiện tại của bạn, đó là vỏ đăng nhập mặc định . Để kiểm tra vỏ bạn đang sử dụng, hãy thử

ps $$

Điều này sẽ hoạt động trên hầu hết Unix / Linux gần đây với pscú pháp BSD. Mặt khác, đây là cách di động (POSIX)

ps -p $$

Điều đó sẽ trả lại một cái gì đó như thế này nếu bạn đang chạy tcsh:

8773 pts/10   00:00:00 tcsh

Nếu bạn muốn có tcshvỏ mặc định của mình, hãy sử dụng chshđể đặt nó.


Bạn có biết làm thế nào tôi có thể kiểm tra xem tập tin cấu hình nào được tải không? (bashrc)
coffeMug

@Coffe_Mug không chắc ý của bạn là gì. Bạn có thể đặt shell mặc định với chsh, .bashrcsẽ chỉ được đọc nếu bạn i) đang chạy bash và ii) chạy nó dưới dạng shell tương tác, không đăng nhập. Làm thế nào bạn đăng nhập vào máy này?
terdon

Tôi có một đoạn script khởi động shell bash này từ shell tcsh.
coffeMug

4
Tại sao không chỉps $$
cjm

1
@cjm tại sao không thực sự, trả lời chỉnh sửa.
terdon

8

Từ dòng lệnh, bạn cũng có thể sử dụng $0biến để xác định shell nào bạn đang sử dụng. ví dụ:

~$ echo $0
/bin/bash


~$ ksh
$ echo $0
ksh

Lưu ý: bạn không thể xác định shell bằng $ 0 trong tập lệnh, vì $ 0 sẽ là chính tập lệnh.


1

Điều này hoạt động cho linux:

lsof -a -p $$ -d txt

hoặc, nếu bạn cần lựa chọn mạnh hơn (nhiều hệ thống hơn):

lsof -a +D /bin +D /usr/bin -p $$ -d txt

1

Đây là một sửa đổi cho tất cả các câu trả lời tốt hơn ở trên. Tôi đã có một vấn đề nhỏ xác định dấu gạch ngang tại một điểm; dường như đúng để chia sẻ:

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | sh
ash (dash 0.5.5.1 ff)

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | bash
bash 4.3.30(1)-release

Tốt cho xử lý sự cố ở các điểm chặt chẽ là tất cả. Chúc mừng.

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.