複数の実行可能スクリプトをディレクトリに配置し、そのディレクトリをインポートしてこれらのコマンドをすべて使用できるようにすることはできますか?

複数の実行可能スクリプトをディレクトリに配置し、そのディレクトリをインポートしてこれらのコマンドをすべて使用できるようにすることはできますか?

実行可能なスクリプトの束を.commandディレクトリ(また実行可能)に入れて、.bash_profileからそのディレクトリをインポートしたいと思います。可能ですか?ファイルで作業できます。ただし、2番目のファイルを追加すると、2番目のファイルのコマンドはシェルでは使用できません。

私.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

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その他)を置きます。

関連情報