Một số vấn đề phát sinh khi cố gắng tải lại tập tin / nguồn ~ / .profile. [Điều này đề cập đến Ubuntu linux - trong một số trường hợp, chi tiết của các lệnh sẽ khác nhau]
- Bạn đang chạy trực tiếp trong thiết bị đầu cuối hoặc trong một kịch bản?
- Làm thế nào để bạn chạy này trong một kịch bản?
Quảng cáo. 1)
Chạy nó trực tiếp trong thiết bị đầu cuối có nghĩa là sẽ không có subshell được tạo. Vì vậy, bạn có thể sử dụng một trong hai lệnh:
source ~/.bash_profile
hoặc là
. ~/.bash_profile
Trong cả hai trường hợp, điều này sẽ cập nhật môi trường với nội dung của tệp .profile.
Quảng cáo 2) Bạn có thể bắt đầu bất kỳ tập lệnh bash nào bằng cách gọi
sh myscript.sh
hoặc là
. myscript.sh
Trong trường hợp đầu tiên, điều này sẽ tạo ra một lớp con sẽ không ảnh hưởng đến các biến môi trường của hệ thống của bạn và chúng sẽ chỉ hiển thị với quy trình của lớp con. Sau khi hoàn thành lệnh subshell, không xuất khẩu, vv sẽ không được áp dụng. ĐÂY LÀ MỘT CÂU HỎI THƯỜNG GẶP VÀ gây ra rất nhiều nhà phát triển để mất rất nhiều thời gian.
Để các thay đổi của bạn được áp dụng trong tập lệnh của bạn có hiệu lực đối với môi trường toàn cầu, tập lệnh phải được chạy với
.myscript.sh
chỉ huy.
Để đảm bảo rằng tập lệnh của bạn không bị chạy trong một khung con, bạn có thể sử dụng chức năng này. (Một ví dụ nữa là dành cho Ubuntu shell)
#/bin/bash
preventSubshell(){
if [[ $_ != $0 ]]
then
echo "Script is being sourced"
else
echo "Script is a subshell - please run the script by invoking . script.sh command";
exit 1;
fi
}
Tôi hy vọng điều này sẽ xóa một số hiểu lầm phổ biến! : D Chúc may mắn!