2009-09-24 10:35:48 +0000 2009-09-24 10:35:48 +0000
604
604

source」は何をしているのでしょうか?

$ whatis source
source: nothing appropriate.
$ man source
No manual entry for source
$ source
bash: source: filename argument required
source: usage: source filename [arguments]

存在していて、実行可能です。なぜUbuntuにはドキュメントがないのですか?それは何をするのですか?それに関するドキュメントをインストールするにはどうすればいいですか?

回答 (9)

289
289
289
2013-07-11 13:24:07 +0000
  • ./ は実行ファイルとしてスクリプトを実行し、それを実行するために 新しいシェルを起動します
  • source現在のシェル環境のファイル名からコマンドを読み込んで実行します

注意: ./scriptsource script ではなく ./script == . script です。

92
92
92
2013-01-09 15:45:47 +0000

type'コマンドを知っておくと便利です:

> type source
source is a shell builtin

何かがシェルに組み込まれているときはいつでも、それはman bashを行う時間です。

40
40
40
2009-09-24 10:48:52 +0000

. (ピリオド)は引数として渡されたファイルから現在のシェル内でコマンドを実行するbashシェル組み込みコマンドです。source’ は ‘.’ の同義語です。

Bash man ページより:

. filename [arguments]
source filename [arguments]
       Read and execute commands from filename in the current shell
       environment and return the exit status of the last command exe‐
       cuted from filename. If filename does not contain a slash, file
       names in PATH are used to find the directory containing file‐
       name. The file searched for in PATH need not be executable.
       When bash is not in posix mode, the current directory is
       searched if no file is found in PATH. If the sourcepath option
       to the shopt builtin command is turned off, the PATH is not
       searched. If any arguments are supplied, they become the posi‐
       tional parameters when filename is executed. Otherwise the
       positional parameters are unchanged. The return status is the
       status of the last command exited within the script (0 if no
       commands are executed), and false if filename is not found or
       cannot be read.
32
32
32
2009-09-24 10:46:01 +0000

source’ は ‘.’ コマンドのロングバージョンです。bashプロンプトでは、次のようにしてください:

source ~/.bashrc

現在実行中のbashの設定をリロードします。

ショートバージョンは次のようになります:

. ~/.bashrc

マンページ: . filename [arguments] source filename [arguments] Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename. If filename does not contain a slash, file names in PATH are used to find the directory containing filename. The file searched for in PATH need not be executable. When bash is not in posix mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the shopt builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename is not found or cannot be read.

28
28
28
2015-03-27 13:57:39 +0000

source コマンドは、与えられたスクリプト (実行許可は必須ではありません**) を *現在のシェル環境で実行しますが、./ は与えられたスクリプトを *新しいシェルで実行します。

source コマンドには、. filename と同義語があります。

より分かりやすくするために、次のスクリプトを見てみましょう。これで、2つの選択肢の中から好きなエイリアスを作成することができます。

オプション1: ./make_alias

最初にスクリプトを実行可能にします。 ** 新しいシェルでエイリアスがなくなった

2つ目のオプションで行こう

オプション2: source make_alias

実行

#! /bin/bash

alias myproject='cd ~/Documents/Projects/2015/NewProject'

or

chmod +x make_alias

検証

./make_alias

出力

alias

Yeahエイリアスが設定されています。

10
10
10
2015-11-11 05:44:49 +0000

疑問がある場合は、 info コマンドを使用するのが一番です:

[root@abc ~]# info source

BASH BUILTIN COMMANDS
       Unless otherwise noted, each builtin command documented in this section
       as accepting options preceded by - accepts -- to signify the end of the
       options. The :, true, false, and test builtins do not accept options
       and do not treat -- specially. The exit, logout, break, continue, let,
       and shift builtins accept and process arguments beginning with - with-
       out requiring --. Other builtins that accept arguments but are not
       specified as accepting options interpret arguments beginning with - as
       invalid options and require -- to prevent this interpretation.
       : [arguments]
              No effect; the command does nothing beyond expanding arguments
              and performing any specified redirections. A zero exit code is
              returned.

        . filename [arguments]
       source filename [arguments]
              Read and execute commands from filename in the current shell
              environment and return the exit status of the last command exe-
              cuted from filename. If filename does not contain a slash, file
              names in PATH are used to find the directory containing file-
              name. The file searched for in PATH need not be executable.
              When bash is not in posix mode, the current directory is
              searched if no file is found in PATH. If the sourcepath option
              to the shopt builtin command is turned off, the PATH is not
              searched. If any arguments are supplied, they become the posi-
              tional parameters when filename is executed. Otherwise the
              positional parameters are unchanged. The return status is the
              status of the last command exited within the script (0 if no
              commands are executed), and false if filename is not found or
              cannot be read.
5
5
5
2015-09-19 14:14:57 +0000

シェルで “help source "コマンドを入力します。

以下のような出力が得られます。

4
4
4
2017-06-12 00:13:34 +0000

Linux Documentation Project, Advanced Bash Scripting Guide, 第15章 - 内部コマンドとビルトイン :

source , . (ドットコマンド): このコマンドは、コマンドラインから起動されると、スクリプトを実行します。ス ク リ プ ト 内では、 ソ ース フ ァ イ ル名は、 フ ァ イ ル名を読み込みます。ファイルのソース(ドットコマンド)は、コードをスクリプトにインポートし、スクリプトに追加します(C プログラムの #include ディレクティブと同じ効果があります)。正味の結果は、「ソース」となるコード行がスクリプト本体に物理的に存在している場合と同じです。これは、複数のスクリプトが共通のデータファイルや関数ライブラリを使用している場合に便利です。

C言語のプログラミング言語に慣れている人にとっては、ファイルのソースは #includeディレクティブと似たような効果があります。

0
0
0
2018-11-28 08:58:53 +0000

ソースを使用すると、別のファイルから変数や関数をスクリプトに渡すことができ、それらを再度書くことなく使用することができます。

関連する質問

6
10
37
6
2