쉘 스크립트를 통해 명령을 찾을 수 없지만 터미널에서 실행할 수 있습니다

쉘 스크립트를 통해 명령을 찾을 수 없지만 터미널에서 실행할 수 있습니다

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

샘플.sh 파일

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

PATH는 파일에 설정됩니다 .bashrc.

export PATH=$PATH:/usr/bin/

cp, mvant스크립트를 통하지 않고 터미널에서만 작동합니다.

답변1

귀하의 스크립트는 쉘 스크립트( /bin/sh) 이므로 PATH항목은 대화형 쉘 ( )처럼 읽혀 .bashrc지지 않습니다 .bash/bin/bash

특정 사용자가 실행하는 스크립트에서 항목을 사용할 수 있도록 하려면 PATH해당 사용자의 홈 디렉토리에 있는 파일에 항목을 추가하십시오./bin/shPATH.profile


또한 스크립트의 각 명령에 전체 경로를 추가할 수 있습니다.

/bin/cp filename.so filename_org.so

또는 PATH스크립트 시작 부분에 필요한 모든 변수가 포함된 변수를 설정하세요.$PATHS

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

답변2

작은 스크립트가 있으면 간단한 작업을 수행하고 가능한 한 빨리 작업을 완료할 수 있습니다.

명령줄을 입력하고 다음 명령을 사용합니다.

which your_command 

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

답변3

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

다음을 수행하여 문제가 해결되었습니다.

바이너리를 추가하거나 /usr/bin의 바이너리에 대한 링크를 추가합니다.

ln -s [path_to_binary] [name_of_executable] 

그런 다음 사용하여 확인하십시오.

ls -l

bashrc에서 항목을 삭제할 수 있습니다.

관련 정보