Có một vài cách để làm điều này.
Sử dụng tập lệnh
Một giải pháp nhanh và bẩn sẽ là viết một tập lệnh được gọi apt-get
hoặc aptitude
làm cho nó gọi chương trình thực tế như sau:
#!/bin/bash
# filename: apt-get
# '$@' is all of the arguments passed to the script
/usr/bin/apt-get-bin "$@"
# or /usr/bin/aptitude-bin "$@"
if [[ $1 == *upgrade* ]] ; then
checkrestart
fi
Làm cho tập lệnh thực thi : chmod +x apt-get
. Bạn cũng có thể muốn tạo tập lệnh sở hữu bởi root : chown root apt-get; chgrp root apt-get
. Cẩn thận không đặt bit setuid trên tập lệnh của bạn, bởi vì nếu kẻ tấn công giành được đặc quyền ghi cho nó, chúng có thể nhanh chóng và dễ dàng sửa đổi nó để cung cấp cho chúng một vỏ gốc.
Phương pháp này tất nhiên sẽ yêu cầu bạn di chuyển nhị phân thực tế sang một vị trí khác và di chuyển tập lệnh shell của bạn đến một vị trí trong đường dẫn của bạn. Nơi thích hợp để đặt tập lệnh người dùng là /usr/local/bin
. Tuy nhiên, trong tình huống này, bạn nên đặt tập lệnh của mình vào vị trí nhị phân thực tế trước khi bạn di chuyển tập lệnh để giữ mọi thứ ngăn nắp.
Thay thế nhị phân bằng một tập lệnh theo cách này khá xâm phạm và ảnh hưởng đến tất cả người dùng trên máy. Thay vào đó, bạn có thể gọi kịch bản của mình một cái gì đó giống như apt-get-cr
và chỉ cần nhớ gọi kịch bản đó thay vì apt-get
. Bạn cũng có thể viết một hàm shell.
Sử dụng chức năng Shell
Sử dụng hàm shell cho phép bạn giữ tên lệnh apt-get
mà không phải di chuyển xung quanh nhị phân.
apt-get() {
# 'command' makes sure this function doesn't call itself.
# You could also use a direct path the binary as shown above.
command apt-get "$@"
if [[ $1 == *upgrade* ]] ; then
checkrestart
fi
}
Đặt chức năng này ở đâu đó trong cấu hình shell của bạn ( ~/.bashrc
, ~/.zshrc
, vv)
Phương pháp này thường ít xâm phạm hơn nhiều so với phương thức script. Ngoài ra, nó không yêu cầu di chuyển xung quanh các nhị phân, thường là điều mà chỉ người dùng root mới có thể làm được.
Mặt khác, phương thức hàm shell không phải lúc nào cũng dễ di chuyển giữa các shell và vốn không phù hợp với các giao diện đồ họa như các thanh trình khởi chạy theo cách mà phương thức script thực hiện (hầu như bạn luôn có thể coi tập lệnh như một tệp nhị phân thực thi. )
apt
thường gọidpkg
nhiều lần mỗi lần nó được chạy.