Biến môi trường $ HOME có luôn được đặt trên hệ thống Linux không?


13

Giả sử máy đang chạy kernel Linux, các phiên sử dụng shell Bash và mọi thứ đều sử dụng cấu hình mặc định (không có người dùng nào thực hiện bất kỳ thay đổi nào đối với tệp cấu hình), chúng ta có thể giả sử rằng $HOMEbiến môi trường luôn được đặt không?


nobodykhông có nhà! (Đó là nobody, người dùng.)
devnull

1
@devnull không có nhà (ví dụ: có thư mục chính được chỉ định không tồn tại), không có nghĩa là $ HOME env. biến không thể được đặt. Nếu được đặt, nó sẽ không phải trỏ đến một thư mục hiện có cũng như mục nhập tại nhà/etc/passwd
Anthon

Câu trả lời:


16

Đúng. Đặc tả POSIX yêu cầu HĐH đặt giá trị cho $ HOME:

TRANG CHỦ
Hệ thống sẽ khởi tạo biến này tại thời điểm đăng nhập để trở thành tên đường dẫn của thư mục chính của người dùng. Xem pwd.h.

Còn người dùng nobodythì sao?

# su - nobody
No directory, logging in with HOME=/
$ echo $HOME
/

Mặc dù nobodykhông có nhà thực sự, HOMEđược đặt vào thư mục gốc.


Nó không phải là shell mà thiết lập HOME- không có shell nào thông thường ngoại trừ zsh. Đó là chương trình đăng nhập bạn (bao gồm các phương thức như cron).
Gilles 'SO- ngừng trở nên xấu xa'
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.