lệnh không được tìm thấy qua shell script nhưng hoạt động trên terminal


17

Trong tệp .sh của tôi, tôi không thể gọi các lệnh ant hoặc mv hoặc cp nhưng các lệnh tương tự thực thi trên terminal. Below là tập lệnh của tôi

tập tin sample.sh

#! /bin/sh
cp filename.so filename_org.so
android update project -p .
ant clean
ant release

đường dẫn được thêm vào trong tập tin .bashrc.

export PATH=$PATH:/usr/bin/

cp, mv, ant chỉ hoạt động dưới terminal không qua scirpt.


1
Cung cấp cho chúng tôi thêm thông tin về vấn đề của bạn ..
Ruban Savvy

android/ ant, những nhị phân này trong / usr / bin?
UVV

Câu trả lời:


13

Vì tập lệnh của bạn là tập lệnh shell ( /bin/sh), nên các PATHmục nhập của bạn .bashrcsẽ không được đọc như đối với trình bao tương tác bash( /bin/bash).

Để làm cho các PATHmục nhập của bạn có sẵn cho /bin/shcác tập lệnh được chạy bởi một người dùng cụ thể, hãy thêm PATHmục nhập vào .profiletệp trong thư mục chính của người dùng đó.


Ngoài ra, bạn có thể thêm đường dẫn đầy đủ cho mỗi lệnh của mình trong tập lệnh:

/bin/cp filename.so filename_org.so

Hoặc đặt PATHbiến bao gồm tất cả các yêu cầu $PATHSở đầu tập lệnh của bạn.

PATH=$PATH:/bin:/usr/bin:xxx
export PATH

2
Phân tích chính xác, nhưng bạn đã không đề cập đến giải pháp phù hợp, đó là đặt PATHở vị trí thích hợp thay vì .bashrc. Thay đổi tập lệnh thành tập lệnh bash sẽ không tạo ra bất kỳ sự khác biệt nào: .bashrcchỉ được tải bởi các trình bao tương tác.
Gilles 'SO- ngừng trở nên xấu xa'

2

Có cùng một vấn đề trong khi chạy nhị phân có đường dẫn được đặt trong bashrc.

Giải quyết vấn đề bằng cách làm như sau:

Thêm nhị phân hoặc thêm một liên kết đến nhị phân trong / usr / bin.

ln -s [path_to_binary] [name_of_executable] 

Sau đó kiểm tra bằng

ls -l

Bạn có thể loại bỏ bashrc mẫu.


0

bạn có thể làm một điều đơn giản nếu bạn có kịch bản nhỏ và hoàn thành công việc càng sớm càng tốt

đi vào dòng lệnh sử dụng bên dưới lệnh

which your_command 

Lệnh trên sẽ in đầu ra bao gồm cả đường dẫn sử dụng lệnh đó trực tiếp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.