Tôi đã tạo một chương trình C đơn giản như vậy:
int main(int argc, char *argv[]) {
if (argc != 5) {
fputs("Not enough arguments!\n", stderr);
exit(EXIT_FAILURE);
}
Và tôi đã sửa đổi PATH của mình trong etc / bash.bashrc như vậy:
PATH=.:$PATH
Tôi đã lưu chương trình này dưới dạng set.c và đang biên dịch nó với
gcc -o set set.c
trong thư mục
~/Programming/so
Tuy nhiên, khi tôi gọi
set 2 3
chẳng có gì xảy ra. Không có văn bản xuất hiện.
Gọi điện thoại
./set 2 3
cho kết quả như mong đợi
Tôi chưa bao giờ gặp vấn đề với PATH trước đây và
which set
trả lại ./set. Vì vậy, có vẻ như PATH là chính xác. Chuyện gì đang xảy ra vậy?
testvì lý do tương tự; testlà một vỏ tích hợp quá.
testdường như có ý nghĩa. Tất nhiên vào thời điểm bạn đặt nó vào bạn, PATHbạn thực sự nên nghĩ ra một cái tên khác. Và cho đến khi bạn đặt chương trình vào, PATHbạn sẽ phải gọi nó bằng ./testmọi cách. Vì vậy, sẽ ổn khi sử dụng tên testcho một chương trình miễn là nó là một bài kiểm tra nhanh mà bạn định xóa trước khi kết thúc ngày.
foo.
lsthì bất cứ khi nào bạn đi để xem nếu nó tồn tại, nó sẽ chạy (nhưng chỉ khi bạn sửa đổi đường dẫn của bạn như bạn đã làm trong câu hỏi).