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?
test
vì lý do tương tự; test
là một vỏ tích hợp quá.
test
dường như có ý nghĩa. Tất nhiên vào thời điểm bạn đặt nó vào bạn, PATH
bạ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, PATH
bạn sẽ phải gọi nó bằng ./test
mọi cách. Vì vậy, sẽ ổn khi sử dụng tên test
cho 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
.
ls
thì 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).