여러 개의 실행 가능한 스크립트를 디렉터리에 넣고 해당 디렉터리를 가져와 이러한 명령을 모두 사용할 수 있도록 할 수 있습니까?

여러 개의 실행 가능한 스크립트를 디렉터리에 넣고 해당 디렉터리를 가져와 이러한 명령을 모두 사용할 수 있도록 할 수 있습니까?

실행 가능한 스크립트 묶음을 .command 디렉터리(또한 실행 가능)에 넣은 다음 .bash_profile에서 해당 디렉터리를 가져오고 싶습니다. 가능합니까? 파일로 작업할 수 있어요. 그러나 두 번째 파일을 추가할 때 두 번째 파일에 대한 명령은 셸에서 사용할 수 없습니다.

내.bash프로필

source ~/.commands/*

내 .commands 폴더

-rwxr-xr-x   1 christopherreece  staff   108 Dec 14 08:55 server_utils.sh
-rwxr-xr-x   1 christopherreece  staff    23 Dec 14 09:04 short

짧은 내용

echo 'a short program'

server_utils.sh 경쟁

function upfile {
  scp $1 root@myserveripadress:~/
}

쉘 입력 및 출력.

$ hello
hello

$ short
-bash: short: command not found

답변1

하나만으로는 그렇게 할 수 없습니다 source. 첫 번째 인수는 파일 이름으로 처리되고, 다른 인수는 소스 스크립트에서 위치 인수로 나타납니다 $1. ....$2

$ cat test.src 
echo hello $1
$ source test.src there
hello there

하지만 루프를 사용하면 이 작업을 수행할 수 있습니다.

for f in ~/commands/*.src; do
    source "$f"
done

(그런데, 백업 파일 뒤에 . 가 붙는 편집기를 사용하는 경우 ~이와 같은 내용에 특정 확장자를 가진 파일만 포함하는 것이 유용합니다. 이렇게 하면 백업 복사본이 실수로 활성화되지 않습니다. )

echo그러나 일반적인 명령(예: 위 명령 또는 귀하의 명령 ) 을 포함하는 소스 스크립트가 있는 경우 short스크립트가 실행될 때 명령이 실행됩니다 source. 조달 셸에서는 어떤 기능도 생성하지 않습니다.

$ cat test2.src 
echo "shows when sourced"
func() {
    echo "shows when function used"
} 
$ source test2.src 
shows when sourced
$ func
shows when function used

실행 가능한 스크립트(예: 명령으로 이름을 지정할 때 실행되는 종류)를 사용하려면 어딘가에 두고 PATH(이 경우 권장함 ~/bin) 실행 권한을 부여한 다음 적절한 해시뱅 스크립트( #!/bin/sh또는 #!/bin/bash기타) 를 넣으십시오.

관련 정보