команда не знайдена через скрипт оболонки, але працює на терміналі


18

У своєму .sh файлі я не можу викликати команди ant або mv або cp, але ті ж самі команди виконуються на terminal.below - мій сценарій

sample.sh файл

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

шлях додано у файл .bashrc.

export PATH=$PATH:/usr/bin/

cp, mv, ant працюють лише під терміналом, не через scirpt.


1
Дайте нам більше інформації про проблему з юром ..
Рубан Савві

android/ ant, чи ці двійкові файли в / usr / bin?
UVV

Відповіді:


13

Оскільки ваш скрипт є скриптом оболонки ( /bin/sh), то ваші PATHзаписи в .bashrcне будуть читатися так, як це стосується bash( /bin/bash) інтерактивної оболонки.

Щоб зробити ваші PATHзаписи доступними для /bin/shсценаріїв, які виконує конкретний користувач, додайте PATHзапис до .profileфайлу в домашньому каталозі цих користувачів.


Крім того, ви можете додати повний шлях для кожної своєї команди в сценарії:

/bin/cp filename.so filename_org.so

Або встановіть PATHзмінну, включаючи всі необхідні $PATHSна початку вашого сценарію.

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

2
Правильний аналіз, але ви не згадали про правильне рішення, яке полягає у встановленні PATHв потрібному місці замість .bashrc. Зміна сценарію на баш-скрипт не матиме ніякої різниці: .bashrcзавантажується лише інтерактивними оболонками.
Жил "ТАК - перестань бути злим"

2

Була та сама проблема під час запуску двійкового файлу, шлях якого встановлений у bashrc.

Вирішили проблему, зробивши наступне:

Додайте двійкове або додайте посилання на бінарне в / usr / bin.

ln -s [path_to_binary] [name_of_executable] 

Потім перевірте використання

ls -l

Ви можете видалити форму реєстрації bashrc.


0

ви можете зробити одну просту річ, якщо у вас є невеликий сценарій і закінчити роботу якнайшвидше

перейти на командний рядок використовувати нижче команди

which your_command 

вище команда буде друкувати вихід, включаючи шлях використання цієї команди прямий

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.