스크립트 내보내기 기능

스크립트 내보내기 기능

찾은 솔루션을 구현하려고 합니다.여기. 그러나 동료는 함수를 .bash_profile 또는 .bashrc 파일에 직접 추가하는 대신 사용자 정의 스크립트를 자체 파일에 배치하고 /usr/bin에 소프트 링크하도록 제안했습니다. 이 작업을 수행하고 스크립트를 실행 가능하게 만들었지만 작동하지 않는 것 같습니다. 이러한 기능을 내보내야 한다고 생각하는데 어떻게 해야 할지 모르겠습니다.

사용자 정의 스크립트 함수를 경로에 있도록 내보내려면 어떻게 해야 합니까? 예를 들면 다음과 같습니다. 따라서 다른 명령처럼 실행할 수 있습니다.

편집 #1:

내가 찾은이것(그리고 그것을 시도했지만) 여전히 작동하지 않는 것 같습니다. 지금 내가 뭘 잘못하고 있는지 잘 모르겠습니다...

답변1

여기에는 완전히 다른 두 가지 일이 작용하고 있습니다. 쉘 스크립트는 직접 실행할 수 있는 실행 파일이므로 파일을 생성하면 /usr/bin/foo(수동으로 물건을 넣으면 안 됩니다., 그러나 무슨 일이 있어도) 실행할 수 foo있으며 다음과 같이 실행됩니다.

$ cat /usr/bin/foo
#!/bin/bash
echo One

$ foo
One

함수는 이름으로 실행될 수도 있지만 먼저 정의해야 합니다. 이는 함수를 셸에 직접 입력하거나 또는 명령을 사용하여 source해당 함수가 포함된 파일을 가져올 때 .발생합니다 .

$ function bar() {echo Two;}

$ bar
Two

$ cat functions.sh
function baz() {echo Three;}

$ baz
command not found: baz

$ . functions.sh

$ baz
Three

경로의 파일에 함수를 정의해도 아무 작업도 수행되지 않습니다. 로그인 스크립트에서 파일을 가져와야 합니다. 별도의 스크립트를 만들고 싶다면 함수와 동일한 이름을 지정하고 함수를 완전히 제거하여 이름으로 스크립트를 호출할 수 있습니다.

답변2

스크립트는 사용자에게 정의를 푸시할 수 없습니다. 소싱을 통해 스크립트에서 가져와야 합니다. 이것이 . /usr/bin/cdjs완료되었습니다(스크립트가 /usr/bin/cdjs에 있는 경우). 그 후에 cdjs는 언제든지 사용할 수 있습니다.

동료가 대신 함수 스크립트를 만들 것을 제안할 수도 있습니다. 함수 cdjs는 스크립트로 만들 수 있지만 작동하려면 다음과 같이 사용할 때마다 스크립트를 가져와야 합니다 . cd2js.

이렇게 하려면 다음이 /usr/bin/cd2js포함된 실행 파일이 있어야 합니다.

$/bin/sh
cd /domains/"$1"/applications/j2ee-apps

이 디렉터리에서 제한된 수의 작업을 자주 수행하는 경우 이러한 작업을 수행하기 위해 여러 스크립트를 생성할 수 있습니다.

따라서 다음과 같은 스크립트를 가질 수 있습니다.

#!/bin/sh

ls /domains/"$1"/applications/j2ee-apps/

에 넣으면 언제든지 내용을 볼 /usr/bin/lsj2수 있습니다 .lsj2 some-domain-1

답변3

어쩌면 함수 이름을 파일 이름으로 사용하여 각 함수를 자체 파일에 넣고 코드를 함수와 분리해야 할까요? 여러 함수를 경로로 내보낸 스크립트가 있을 수 있다고 생각했는데...

관련 정보