3
#!/bin/bash
#
. ~/some_env database_name

コードは上記のようになり、bashで実行しようとするたびに、ファイルまたはディレクトリが存在しないというエラーが表示されます。ディレクトリを作成すると、ディレクトリを使用していると文句を言います。ファイルを作成すると、「ファイル名は関数ではありません」と文句を言います。

このコード行は何をしますか?検索文字列が非常に短いため、行が何をするのかを理解するのは非常に困難です。

また、私はbashを初めて使用します。

4

3 に答える 3

5

.sourceの省略形であるため、このコマンドは~/some_envwithパラメーターの内容を実行するだけdatabase_nameです。source名前付きファイルの内容を現在のシェルコンテキスト内(つまり、サブシェル内ではない)で実行し、名前付きファイルが実行可能であるかどうかは関係ありません。some_envホームディレクトリに名前が付けられたファイルまたは現在の作業ディレクトリに名前が付けられたファイルがない場合はdatabase_name、エラーメッセージが表示されます。

于 2012-07-16T15:00:34.427 に答える
4

.some_env現在のシェルでコマンドを入力したかのようにスクリプトを実行します。これはソーシングと呼ばれ、通常のスクリプトとして実行するのとは異なります。これは、コマンドの実行後に現在のシェルに存在する環境変数を設定したり、関数を作成したりできるためです。

database_nameは最初の引数であり$1、スクリプト内で使用できます。

にファイルがない場合は、~/some_env実行するものがないため、エラーが発生します。スクリプト内の何かが存在しないファイルを参照している可能性もあります。スクリプトに関する詳細を投稿する必要がある場合があります。

于 2012-07-16T15:02:13.973 に答える
1

あなたはそれが~あなたのホームディレクトリを参照していることを知っていますか?スクリプトが別のユーザーからのものである場合、彼がそれを実行したとき、それは彼のホームディレクトリでファイルsome_envを見つけていました。それを実行すると、そのファイルはそこにないか、スクリプトが期待するものを含んでいません。

于 2012-07-16T15:02:30.200 に答える