Tại sao root không nguồn .bash_profile?


10

Mỗi lần tôi cố gắng đăng nhập bằng root bằng cách sử dụng su(không su -), nó không có nguồn .bash_profiletrong thư mục chính của user1.

Về cơ bản, tôi /var/rootthư mục không có .bash_profile, vì vậy tôi đặt một bản sao của .bash_profiletrong /var/rootđể kiểm tra su -.

Nó cũng không tự động nguồn .bash_profile(trong var/root).

Dù sao, tôi muốn .bash_profiletự động tạo tài khoản root trong tài khoản root khi tôi sử dụng su.

Tôi nên làm gì?

(Nó hoạt động trước đó! Một ngày, nó không có nguồn! Có thể có gì đó đã thay đổi cài đặt trong bash? Nó hoạt động khi tôi nhập source .bash_profilesau khi đăng nhập.)

Tôi đang sử dụng Mac và OS X Yosemite.

Câu trả lời:


11

Shell mặc định cho roottrên OS X là /bin/sh. Nó shcũng là một phiên bản của bash, nhưng khi được gọi với tên shBash :

cố gắng bắt chước hành vi khởi động của các phiên bản lịch sử shcàng gần càng tốt, đồng thời tuân thủ tiêu chuẩn POSIX.

Khi được gọi dưới dạng shell đăng nhập tương tác hoặc dưới dạng shell không tương tác với --logintùy chọn, trước tiên, nó sẽ cố gắng đọc và thực thi các lệnh từ /etc/profile~/.profile, theo thứ tự đó. ... một shell được gọi vì sh không cố đọc và thực thi các lệnh từ bất kỳ tệp khởi động nào khác

Đó là, nó hoàn toàn không đọc .bash_profile, bất kể nó có được gọi là shell đăng nhập hay không . Bạn có thể sử dụng .profilethay thế, hoặc thậm chí liên kết tượng trưng với nhau. Nếu bạn khởi chạy shell đăng nhập với su -l, .profileđược tải khi khởi động, nhưng .bash_profilesẽ không bao giờ.


Bạn cũng có thể sử dụngdscl để thay đổi vỏ rễ của (lưu ý rằng /etc/passwdkhông dùng để xác định vỏ trên OS X). Bạn có thể kiểm tra shell hiện tại của root với dscl . -read /Users/root UserShell; tham khảo tài liệu và suy nghĩ cẩn thận trước khi thay đổi nó thành một cái gì đó khác.

Một cách tiếp cận khác chỉ đơn giản là thay đổi sulời mời của bạn để buộc thực thi bashngay lập tức.

Đưa ra những gì bạn đã nói, có lẽ tôi muốn giới thiệu liên kết tượng trưng, ​​nhưng bạn có thể muốn xem xét các thay đổi mà chế độ POSIX của Bash thực hiện và quyết định xem bạn có muốn có chúng hay không.



5

Người dùng root sẽ cố gắng thực thi tệp .bashrc thay vì .bash_profile vì bạn không gọi shell đăng nhập.

Từ hướng dẫn bash man bash:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file

Lưu ý vị ~trí tệp .bashrc cần nằm trong homedirectory của người dùng root.

Để thực sự trả lời câu hỏi của bạn, nếu bạn muốn sử dụng tệp .bashrc của user1, tôi khuyên bạn nên tạo một liên kết (tượng trưng) giữa nguồn .bashrc từ user1 đến người dùng root.

Bạn cũng có thể xem xét để cung cấp nguồn user1 .bashrc hoặc thậm chí .bash_profile bằng cách thêm dòng . /homedirectory/of/user1/.bash_profilevào tệp .bashrc của người dùng root.

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.