쉘 스크립트를 통해 명령을 찾을 수 없지만 터미널에서 작동


18

내 .sh 파일에서 ant 또는 mv 또는 cp 명령을 호출 할 수 없지만 동일한 명령이 터미널에서 실행됩니다. 아래는 내 스크립트입니다.

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
yur 문제에 대한 자세한 정보를 제공하십시오 ..
Ruban Savvy

android/ ant이 바이너리는 / usr / bin에 있습니까?
UVV

답변:


13

스크립트가 쉘 스크립트 ( /bin/sh)이므로 입력 한 PATH항목 .bashrcbash( /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. 스크립트를 bash 스크립트로 변경해도 아무런 차이가 없습니다 .bashrc. 대화식 쉘에서만로드됩니다.
Gilles 'SO- 악마 그만해

2

bashrc에 경로가 설정된 바이너리를 실행하는 동안 동일한 문제가 발생했습니다.

다음을 수행하여 문제를 해결하십시오.

바이너리를 추가하거나 / usr / bin에 바이너리에 대한 링크를 추가하십시오.

ln -s [path_to_binary] [name_of_executable] 

그런 다음 사용하여 확인

ls -l

bashrc 항목을 제거 할 수 있습니다.


0

작은 스크립트를 가지고 작업을 최대한 마치면 간단한 일을 할 수 있습니다

명령 아래 명령 줄 사용으로 이동

which your_command 

위의 명령은 해당 명령을 직접 사용하는 경로를 포함하여 출력을 인쇄합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.