Bash không tải '.profile' trong phiên mới trên Linux
Tôi đang thiết lập một máy Linux mới mà tôi nhận được từ bộ phận CNTT của chúng tôi và nhận thấy .profilenó không được tải khi tôi bắt đầu một phiên đầu cuối mới. Vỏ hiện tại là Bash , mặc dù tôi đã thay đổi nó từ sh mặc định mà nó đi kèm. Làm cách nào để làm cho nó tải .profilekhi khởi động?
Tôi truy cập vào vỏ qua SSH : ssh myusername@remotemachine. Tôi có đặc quyền của quản trị viên trên đó.
Trả lời
Khi Bash bắt đầu như một trình bao đăng nhập tương tác, một trong những tệp mà nó có thể xử lý là ~/.profile.
Khi nó bắt đầu dưới dạng một shell tương tác không đăng nhập thì không. Nó xử lý /etc/bash.bashrc(nếu tệp đó hoặc tệp tương tự được bật trong phiên bản Bash của bạn) và ~/.bashrc.
Bạn có thể thêm phần sau vào của mình ~/.bashrc(nhưng hãy cẩn thận khi các vòng lặp hoặc giá trị bị thay đổi một cách vô tình):
. $HOME/.profile
Nó phụ thuộc vào cách bạn bắt đầu shell của mình. Như những người khác đã nói, trình bao đăng nhập sẽ tải hồ sơ của bạn (trước tiên nó sẽ tìm kiếm .bash_profile, sau đó sẽ thử .profile). Nếu nó tìm thấy một trong những thứ này, nó sẽ tải chúng. Một shell không đăng nhập (tương tác hoặc không tương tác) sẽ tạo nguồn .bashrc.
Tôi khuyên bạn nên đặt mọi thứ vào .bashrc. Việc phân chia .profile / .bashrc là loại tùy ý và có ý nghĩa hơn trong những ngày cũ của UNIX khi tty không chỉ là một tên thiết bị và có nghĩa là một TeleType thực tế. Nó có nghĩa là để bắt đầu một số việc nhất định (như kiểm tra thư) khi đăng nhập 'chính' vào một máy chủ và chỉ là những thứ thiết lập bình thường cho các trình bao khác. Trong hầu hết các Linux, bạn sẽ đăng nhập ngay bây giờ, bạn không thực sự đăng nhập vào shell, vì bạn đang đăng nhập vào một giao diện đồ họa nào đó (KDE, gnome, CDE 'shudder'). "Quy trình đăng nhập xuất hiện" hiện do người quản lý phiên của bạn thực hiện. Bây giờ nó ít liên quan hơn nhiều.
Đề xuất của tôi: Hãy tạo .profile của bạn chỉ bao gồm:
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
như dòng đầu tiên của .bashrc, hãy đề phòng những điều kỳ lạ xảy ra khi chạy một tập lệnh bash bằng cách xuất hiện sớm:
[[ $- != *i* ]] && return