Bài viết này sẽ giải thích trình tự thực thi các tệp sau:
- / etc / profile
- ~ / .bash_profile
- ~ / .bashrc
- ~ / .bash_login
- ~ / .profile
- ~ / .bash_logout
Trình tự thực thi cho trình bao đăng nhập tương tác
Mã giả sau giải thích trình tự thực thi các tệp này.
execute /etc/profile IF ~/.bash_profile exists THEN execute ~/.bash_profile ELSE IF ~/.bash_login exist THEN execute ~/.bash_login ELSE IF ~/.profile exist THEN execute ~/.profile END IF END IF END IF
Khi bạn đăng xuất khỏi trình bao tương tác, sau đây là trình tự thực hiện:
IF ~/.bash_logout exists THEN execute ~/.bash_logout END IF
Xin lưu ý rằng / etc / bashrc được thực thi bởi ~ / .bashrc như được hiển thị bên dưới:
# cat ~/.bashrc if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Trình tự thực thi cho trình bao tương tác không đăng nhập
Trong khi khởi chạy trình bao tương tác không đăng nhập, sau đây là trình tự thực thi:
IF ~/.bashrc exists THEN execute ~/.bashrc END IF
Lưu ý: Khi một trình bao không tương tác khởi động, nó sẽ tìm kiếm biến môi trường ENV và thực thi giá trị tên tệp được đề cập trong biến ENV.
Kiểm tra trình tự thực thi
Một trong những cách để kiểm tra trình tự thực thi là thêm các giá trị PS1 khác nhau vào các tệp này và đăng nhập lại vào trình bao và xem giá trị PS1 nào được nhận bởi lời nhắc Linux. Ngoài ra, trước đó chúng ta đã thảo luận về cách sử dụng PS1 để làm cho lời nhắc Linux của bạn cả về chức năng và phong cách.
1. / etc / profile được thực thi. Thêm dòng PS1 sau vào / etc / profile và đăng nhập lại để đảm bảo lời nhắc Linux thay đổi giá trị PS1 được đặt bên trong / etc / profile.
# grep PS1 /etc/profile PS1="/etc/profile> " [Note: re-login to see the prompt change as shown below] Last login: Sat Sep 27 16:43:57 2008 from 192.168.1.2 /etc/profile>
Hãy đảm bảo rằng ~ / .bash_profile không có bất kỳ PS1 nào để các phần trên hoạt động bình thường.
2. ~ / .bash_profile được thực thi: Thêm PS1 sau vào ~ / .bash_profile, ~ / .bash_login, ~ / .profile và ~ / .bashrc. Đăng nhập lại để đảm bảo lời nhắc Linux thay đổi giá trị PS1 được đặt bên trong ~ / .bash_profile như được hiển thị bên dưới.
/etc/profile> grep PS1 ~/.bash_profile export PS1="~/.bash_profile> " /etc/profile> grep PS1 ~/.bash_login export PS1="~/.bash_login> " /etc/profile> grep PS1 ~/.profile export PS1="~/.profile> " /etc/profile> grep PS1 ~/.bashrc export PS1="~/.bashrc> " [Note: Upon re-login, it executed /etc/profile first and ~/.bash_profile next. So, it took the PS1 from ~/.bash_profile as shown below. It also did not execute ~/.bash_login, as ~/.bash_profile exists] Last login: Sat Sep 27 16:48:11 2008 from 192.168.1.2 ~/.bash_profile>
3. ~ / .bash_login được thực thi. Đổi tên tệp .bash_profile thành một cái gì đó khác. Đăng nhập lại để đảm bảo lời nhắc Linux thay đổi giá trị PS1 được đặt bên trong ~ / .bash_login như hình dưới đây.
~/.bash_profile> mv .bash_profile bash_profile_not_used [Note: Upon re-login, it executed /etc/profile first. Since it cannot find ~/.bash_profile, it executed ~/.bash_login] Last login: Sat Sep 27 16:50:55 2008 from 192.168.1.2 ~/bash_login>
4. ~ / .profile được thực thi. Đổi tên .bash_login thành một cái gì đó khác. Đăng nhập lại để đảm bảo lời nhắc Linux thay đổi giá trị PS1 được đặt bên trong ~ / .profile như được hiển thị bên dưới.
~/.bash_login> mv .bash_login bash_login_not_used [Note: Upon re-login, it executed /etc/profile first. Since it cannot find ~/.bash_profile and ~/.bash_login, it executed ~/.profile] Last login: Sat Sep 27 16:56:36 2008 from 192.168.1.2 ~/.profile>
5. ~ / .bashrc được thực thi để kiểm tra trình bao không đăng nhập . Đang thực thi “ bash ”tại dấu nhắc lệnh sẽ cung cấp một trình bao không đăng nhập khác, sẽ gọi .bashrc như được hiển thị bên dưới.
~/.profile> bash [Note: This displays PS1 from .bashrc as shown below.] ~/.bashrc> exit exit [Note: After exiting from non-login shell, we are back to login shell] ~/.profile>
Nếu bạn thích bài viết này, vui lòng đánh dấu trang trên del.icio.us và Ngại nó .