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.


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

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.


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.