スクリプトエクスポート機能

スクリプトエクスポート機能

見つかったソリューションを実装しようとしています。ここ。しかし、同僚は、関数を.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

たぶん、関数名をファイル名として使用して、各関数を独自のファイルに入れ、コードを関数から分離する必要がありますか?いくつかの関数をパスにエクスポートしたスクリプトがあると思いました...

関連情報