실행 가능한 스크립트 묶음을 .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
기타) 를 넣으십시오.