見つかったソリューションを実装しようとしています。ここ。しかし、同僚は、関数を.bash_profileまたは.bashrcファイルに直接追加するのではなく、カスタムスクリプトを独自のファイルに配置し、/usr/binにソフトリンクすることを提案しました。これを行い、スクリプトを実行可能にしましたが、うまくいかないようです。これらの機能をエクスポートする必要があると思いますが、どうすればよいかわかりません。
カスタムスクリプト関数をパスにエクスポートするにはどうすればよいですか?たとえば、次のようになります。したがって、他のコマンドのように実行できます。
編集#1:
私が見つけたこれ(そしてそれを試しましたが)まだ動作していないようです。今私が何をしているのかわかりません...
答え1
ここでは全く異なる2つのことが働いています。シェルスクリプトは直接実行できる実行ファイルなので、ファイルを作成すると/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
たぶん、関数名をファイル名として使用して、各関数を独自のファイルに入れ、コードを関数から分離する必要がありますか?いくつかの関数をパスにエクスポートしたスクリプトがあると思いました...