Bạn có thể grep trong file/etc/passwd cho tên người dùng hiện tại, và sử dụng cắt để trích xuất các cột thích hợp của thông tin:
grep ^$(id -un): /etc/passwd | cut -d : -f 7-
$(id -un)
là một an toàn hơn $USER
để lấy tên người dùng. Sử dụng ^
trước tên người dùng và :
sau khi đảm bảo bạn không nhận được kết quả trùng khớp nếu tên người dùng của bạn là phần phụ của tên người dùng khác.
$SHELL
cũng có thể được sử dụng, như được đề xuất. Tuy nhiên nó sẽ không hoạt động nếu chsh
được sử dụng trong trình bao hiện tại, vì biến không được cập nhật. Ngoài ra các biến không được bảo vệ chống lại bị thay đổi, vì vậy nó về mặt lý thuyết có thể được thiết lập để một cái gì đó hoàn toàn khác nhau.
Cập nhật để thử giải pháp tương thích OS X. Có lẽ không phải là regexp tối ưu:
grep ^.*:.*:$(id -u): /etc/passwd | cut -d : -f 7-
Điều này được dựa trên id người dùng. Nếu toàn bộ mục nhập người dùng bị thiếu, không chỉ tên người dùng, thì osx phải lưu trữ mục này ở một nơi khác.
thể trùng lặp của [Làm thế nào để xác định vỏ hiện tại tôi đang làm việc trên?] (http: // stackoverflow. com/questions/3327013/how-to-defined-the-current-shell-im-working-on) – TheHippo
Ngoài ra, hãy nhớ rằng existenc e của http://unix.stackexchange.com/ :) –
Không, đó là về shell * current * chứ không phải shell * default * của người dùng. – zwol