Phiên bản Ubuntu: Ubuntu 20.04.2.0 LTS
vỏ: bash
Tôi có một tập lệnh shell sẽ được thực thi bởi nguồn gốc từ công việc định kỳ của root.
Nhưng, ngay cả khi tôi thực thi tập lệnh theo cách thủ công, nó vẫn báo lỗi như sau
# ./fix_wifi.sh
./fix_wifi.sh: dòng 17: : lệnh không tìm thấy
./fix_wifi.sh: dòng 18: : lệnh không tìm thấy
Dòng 17 và 18 là dòng có tiếng vang
và khởi động lại trình quản lý mạng dịch vụ
Việc cung cấp tên đường dẫn tuyệt đối (/ usr/bin, /usr/sbin) cho các tệp nhị phân này trong tập lệnh không giúp được gì.
Vì vậy, tôi muốn lấy nguồn các tệp khởi động ở đầu tập lệnh để tập lệnh nhận biết biến PATH (và các biến có liên quan khác)
Tuy nhiên, đối với người dùng root trong Ubuntu, tôi nên lấy tệp khởi động nào? tôi có thể thấy .bashrc
và .Hồ sơ
tập tin trong thư mục gốc của root /nguồn gốc
.
#!/bin/bash
# Được viết bởi xyz
# Phải được chạy với quyền root
nếu [[ $EUID -ne 0 ]]; sau đó
  echo "Tập lệnh này phải được chạy với quyền root"
 thoát 1
fi
ConnectionStatus=$(kết nối mạng nmcli)
#echo "$ConnectionStatus"
nếu [ "$ConnectionStatus" != "full" ]
sau đó
  /usr/bin/echo "Wifi bị ngắt kết nối tại " `date` " do đó khởi động lại trình quản lý mạng..." | /usr/bin/tee -a /home/john/scripts/wifi_diagnostics.log
  /usr/sbin/service network-manager khởi động lại
fi
Ghi chú:
Tôi đã quên cung cấp đường dẫn tuyệt đối cho ngày tháng
lệnh trong Dòng 17. Tuy nhiên, nó không liên quan lắm ở đây vì dòng 18 chứa khởi động lại trình quản lý mạng dịch vụ
vẫn bị lỗi mặc dù đã cung cấp đường dẫn đầy đủ (/usr/sbin)