찾은 솔루션을 구현하려고 합니다.여기. 그러나 동료는 함수를 .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
어쩌면 함수 이름을 파일 이름으로 사용하여 각 함수를 자체 파일에 넣고 코드를 함수와 분리해야 할까요? 여러 함수를 경로로 내보낸 스크립트가 있을 수 있다고 생각했는데...