perintah tidak ditemukan melalui skrip shell tetapi berfungsi di terminal

17

Dalam file .sh saya, saya tidak bisa menjalankan perintah semut atau mv atau cp tetapi perintah yang sama dijalankan pada terminal.di bawah ini adalah skrip saya

file sample.sh

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

path ditambahkan dalam file .bashrc.

export PATH=$PATH:/usr/bin/

cp, mv, semut hanya bekerja di bawah terminal bukan melalui scirpt.

pengguna755
sumber
1
Beri kami info lebih lanjut tentang masalah Anda ..
Ruban Savvy
android/ ant, apakah binari ini ada di / usr / bin?
UVV

Jawaban:

13

Karena skrip Anda adalah skrip shell ( /bin/sh), maka PATHentri Anda di .bashrctidak akan dibaca karena itu adalah untuk bash( /bin/bash) shell interaktif.

Untuk membuat PATHentri Anda tersedia untuk /bin/shskrip dijalankan oleh pengguna tertentu, tambahkan PATHentri ke .profilefile di direktori home pengguna tersebut.


Selain itu, Anda dapat menambahkan path lengkap untuk setiap perintah dalam skrip:

/bin/cp filename.so filename_org.so

Atau atur PATHvariabel termasuk semua yang diperlukan $PATHSdi awal skrip Anda.

PATH=$PATH:/bin:/usr/bin:xxx
export PATH
geedoubleya
sumber
2
Analisis yang benar, tetapi Anda tidak menyebutkan solusi yang tepat, yaitu mengatur PATHdi tempat yang tepat, bukan .bashrc. Mengubah skrip menjadi skrip bash tidak akan membuat perbedaan: .bashrchanya dimuat oleh shell interaktif.
Gilles 'SO- stop being evil'
2

Mengalami masalah yang sama saat menjalankan biner yang jalurnya diset di bashrc.

Memecahkan masalah dengan melakukan hal berikut:

Tambahkan biner atau tambahkan tautan ke biner di / usr / bin.

ln -s [path_to_binary] [name_of_executable] 

Kemudian periksa menggunakan

ls -l

Anda dapat menghapus bashrc formulir entri.

Naba
sumber
0

Anda dapat melakukan satu hal sederhana jika Anda memiliki skrip kecil dan menyelesaikan pekerjaan Anda secepatnya

pergi menggunakan perintah baris di bawah perintah

which your_command 

perintah di atas akan mencetak keluaran termasuk jalur yang menggunakan perintah itu langsung

Vishal Kharade
sumber