[bash] sh 쉘에서 소스 명령을 찾을 수 없음

sh쉘 을 사용하는 스크립트가 있습니다. source명령 을 사용하는 줄에 오류가 발생합니다 . sourcesh껍질에 포함되어 있지 않은 것 같습니다 .

source쉘에서 명시 적으로 실행하려고하면 다음 과 같은 결과가 나타납니다.

sh: 1: source: not found

어떻게 든 “소스”를 설치해야합니까? 버전이 잘못 sh되었습니까?



답변

/bin/sh일반적으로 쉘을 모방하려는 다른 쉘입니다. 많은 배포판 사용 /bin/bash을 위해 sh, 그것은 지원합니다 source. 그러나 우분투에서는를 /bin/dash지원하지 않는가 사용됩니다 source. 대부분의 쉘은 .대신에 사용 합니다 source. 스크립트를 편집 할 수 없으면 스크립트를 실행하는 쉘을 변경하십시오.


답변

Bourne shell (sh)에서을 사용하십시오. 파일 소스 명령

. filename


답변

$ls -l `which sh`
/bin/sh -> dash

$sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]

$ls -l `which sh`
/bin/sh -> bash

그럼 괜찮을거야


답변

source내장은 bashism이다. .대신 간단하게 작성하십시오 .

예 :

. $FILE

# OR you may need to use a relative path (such as in an `npm` script):

. ./$FILE

https://wiki.ubuntu.com/DashAsBinSh#source


답변

이 문제는 jenkins Execute Shell이 ​​/ bin / sh를 통해 스크립트를 실행하기 때문에 발생합니다.

결과적으로 / bin / sh는 “source”를 모른다

젠킨스의 Execute Shell 상단에 아래 줄을 추가하면됩니다.

#!/bin/bash


답변

source명령은 일부 쉘에 내장되어 있습니다. 스크립트가있는 경우 다음과 같이 첫 번째 행에서 사용할 쉘을 지정해야합니다.

#!/bin/bash


답변

#Jenkins execute shell에서 소스 명령 을 호출하려고하는 동안이 오류가 발생했습니다 .

source profile.txt
또는
source profile.properties

소스 명령을 대체하는 것은

. ./profile.txt
또는
. ./profile.properties

참고 : 두 점 사이에 공백이 있습니다 (.)