programing

shell에서 source 명령을 찾을 수 없습니다.

instargram 2023. 4. 17. 21:16
반응형

shell에서 source 명령을 찾을 수 없습니다.

이 스크립트는sh셸을 사용하는 행에 오류가 표시됩니다.source명령어를 입력합니다.그런 것 같다source에 포함되어 있지 않습니다.sh껍데기.

내가 명시적으로 도망가려고 하면source셸에서 얻은 정보:

sh: 1: source: not found

"source"를 설치해야 합니까?잘못된 버전인가요?sh?

/bin/sh보통 쉘을 흉내내려고 하는 다른 셸입니다.많은 분포에서 사용/bin/bash위해서sh, 를 서포트합니다.source하지만 우분투에서는/bin/dash를 지원하지 않는 것이 사용되고 있습니다.source대부분의 조개껍질은.대신source스크립트를 편집할 수 없는 경우 스크립트를 실행하는 셸을 변경해 보십시오.

Bourne shell(sh)에서는 . 명령어를 사용하여 파일을 송신합니다.

. filename

특정 OS/환경(Mac OS, Travis-CI, Ubuntu 이상)에서는 다음이 필요합니다.

. ./filename

(아래 Adrien Jolly의 코멘트 크레딧)

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

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

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

그럼 괜찮을 거야

sourcebuiltin은 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는 "소스"를 인식하지 않습니다.

jenkins에서 Execute Shell의 맨 위에 다음 행을 추가하면 됩니다.

#!/bin/bash

#Jenkins execute shell에서 source 명령을 호출하려고 할 때 이 오류가 발생했습니다.

source profile.txt또는source profile.properties

source 명령어 대체는 다음과 같습니다.

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

메모: 두 점 사이에 공백이 있습니다.

source명령어는 일부 셸에 포함되어 있습니다.스크립트가 있는 경우 다음과 같이 첫 번째 줄에 사용할 셸을 지정해야 합니다.

#!/bin/bash

Ubuntu의 gnu Makefile을 찾았습니다(여기서 /bin/sh -> bash)

. 명령어를 사용하고 ./ 프리픽스로 타겟스크립트를 지정해야 했습니다(아래 예 참조).

소스가 이 인스턴스에서 작동하지 않았습니다. /bin/module을 호출해야 하므로 이유를 알 수 없습니다.

My SHEL 환경변수도 /bin/bash로 설정됩니다.

test:
    $(shell . ./my_script)

이 예에서는 탭 문자는 포함되지 않습니다.스택 교환을 위해서는 포맷을 해야 합니다.

source는 bash 기본 제공 명령어이므로 source 명령을 실행하려면 루트로 로그인할 수 있습니다.

sudo -s source ./filename.sh

Ubuntu에서는 sh scriptname을 사용하지 않습니다.sh 파일을 실행하기 위해 .scriptname을 사용했습니다.그리고 효과가 있었어!파일의 첫 번째 행은 다음과 같습니다.#!/bin/bash

이 명령을 사용하여 스크립트를 실행합니다.

.name_of_script.sh

source를 포함한 bash 기능을 사용하도록 설정하는 순수 셸에서 bash로 전환하는 두 가지 옵션이 있습니다.https://superuser.com/questions/1220159/bash-prompt-variables-not-working/1764353#1764353

또는 이 폼의 소스 대신 을 사용합니다.

~/.your_file_name

예를들면

~/.twrcrc

도트와 틸다 사이의 한 칸을 고려해 주세요.Tilda는 홈디렉토리를 참조합니다.파일이 홈 위 어딘가에 있는 경우 /에서 절대 주소를 사용합니다.

스크립트를 "source" 대신 "."를 사용하도록 변경할 수 없는 경우 "sh" 링크를 "dash" 대신 "bash"를 가리키도록 변경합니다.

# which sh
/usr/bin/sh

# which bash
/usr/bin/bash

# ls -la /usr/bin/sh
lrwxrwxrwx 1 root root 4 Oct  5 15:55 /usr/bin/sh -> dash

# ls -sf /usr/bin/bash /usr/bin/sh

# ls -la /usr/bin/sh
lrwxrwxrwx 1 root root 4 Feb  6 09:18 /usr/bin/sh -> bash

이 될 수 있습니다.이했습니다.저는 이 에러를 수신하고 있었습니다.이 에러를 새로고침하려고 했기 때문입니다..profile. .profile 구문 .

쉘하여 Bourne PATH를 .source <file> ' found라는 오류가 파일을 찾을 수 없다

시험:

source ./<filename>

언급URL : https://stackoverflow.com/questions/13702425/source-command-not-found-in-sh-shell

반응형