Tại sao $ 0 được đặt thành -bash?


8

Tên quá trình đăng nhập đầu tiên dường như được đặt thành -bash, nhưng nếu tôi chia nhỏ thì nó sẽ trở thành bash. ví dụ:

root@nowere:~# echo $0
-bash
root@nowere:~# bash
root@nowere:~# echo $0
bash

-bash đang khiến một số tập lệnh thất bại, chẳng hạn như . /usr/share/debconf/confmodule

exec /usr/share/debconf/frontend -bash
Can't exec "-bash": No such file or directory at /usr/share/perl/5.14/IPC/Open3.pm line 186.
open2: exec of -bash failed at /usr/share/perl5/Debconf/ConfModule.pm line 59

Bất cứ ai cũng biết lý do tại sao $0được đặt thành -bash?


1
@ RaduRădeanu Sử dụng vô dụng của mèo phát hiện!
gniourf_gniourf

Câu trả lời:


5

Nếu đầu ra của echo $0lệnh là -bashnó có nghĩa là bashđược gọi như một vỏ đăng nhập. man bashnói đâu đó ở dòng 126:

A  login shell is one whose first character of argument zero is a -, or 
one started with the --login option.

Xem thêm về đây: Sự khác biệt giữa Shell đăng nhập và Shell không đăng nhập .

Vì vậy, shell của bạn vẫn còn /bin/bash(điều này có thể được kiểm tra bằng echo $SHELLlệnh) và tôi khuyên bạn nên sử dụng lệnh đó sẽ gây ra lỗi như bình thường:

exec /usr/share/debconf/frontend bash

Cảm ơn, có vẻ như đăng nhập đang thêm chính xác "-" vào tên quy trình shell đăng nhập. Điều đó trả lời câu hỏi của tôi.
James Shimer
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.