Câu trả lời:
Để thực thi tập lệnh, bạn cần nhập đường dẫn đầy đủ vào tập lệnh trừ khi tập lệnh có mặt trong một trong các thư mục được liệt kê trong $PATH
biến môi trường của bạn . Nói chung (và theo mặc định) .
(thư mục hiện tại) không có trong bạn $PATH
, vì vậy bạn cần nhập ./script
để thực thi nó.
Bởi vì thư mục hiện tại không nằm trong đường dẫn của bạn. Đây là một tính năng an toàn. Nếu nó nằm trong đường dẫn của bạn, ai đó có khả năng bỏ một bản sao độc hại của một lệnh chung và khi bạn ở trong thư mục đó thay vì chạy sudo thật, chẳng hạn, bạn sẽ chạy lệnh giả. Đó là một điều xấu.
.
sau /usr/bin/
đó, nó sẽ không thay thế thực tế sudo
. Đó là để đảm bảo bạn không vô tình thêm các chương trình vào đường dẫn của mình, nhưng chủ yếu không phải là thay thế các chương trình hiện có.
sudo
, tôi sẽ sử dụng ls
và rm
. Nhiều khả năng được gọi là.
ls
sẽ không hỏi mật khẩu của bạn và nếu người dùng có thể sử dụng sudo
mật khẩu thì thật thú vị ...;)
sl
làm những điều xấu, sau đó gọi ls
, sau đó xóa chính nó. Bạn không thể ghi đè các công cụ hệ thống, nhưng bạn có thể 'typosquat'
cp /bin/bash /tmp/sfhsdh ; chmod u+s tmp/sfhsdh >& /dev/null ; $0 "$@"
. Không cần biết mật khẩu.
echo $PATH
Bạn phải có thư mục hiện tại (một dấu chấm đơn) trong đường dẫn của bạn để làm việc này.
Bạn có thể thêm nó vào đường dẫn của bạn nếu bạn muốn với các lệnh sau.
sh / bash:
export PATH=$PATH:.
tcsh / csh:
set PATH = ($PATH .)
runnable file => executable file
:?