いいですね。source
現在のシェルで別々にスクリプトを実行してください.
。詳細についてはをご覧ください。「。」そして「ソース」を使ってスクリプトを実行します。たとえば、しかし具体的に私の場合.bashrc
私が持っているファイル:
[ -f ~/.bash_aliases ] && source ~/.bash_aliases
[ -f ~/.git-completion.bash ] && source ~/.git-completion.bash
[ -s ~/.autojump/etc/profile.d/autojump.sh ] && source ~/.autojump/etc/profile.d/autojump.sh
次に変更できます。
[ -f ~/.bash_aliases ] && . ~/.bash_aliases
[ -f ~/.git-completion.bash ] && . ~/.git-completion.bash
[ -s ~/.autojump/etc/profile.d/autojump.sh ] && . ~/.autojump/etc/profile.d/autojump.sh
OS Xで動作しますか?これが「POSIX」の問題ですか?
私はそれを試してみましたが、上記はまだUbuntuで動作しているようです(したがって、彼らは実際にandで動作しますsource
。.
つまり、シェルで必要な機能を提供します)。これらのいずれかを選択する必要がありますか、それとも何か抜けましたか?
.bashrc
FWIW、OS Xで.bash_profile
。
答え1
でとbash
は.
同義語source
です。bash
ソースコードファイルを見ると、同じ内部関数を表示して使用できますbuiltin/source.def
。.
source
source_builtin
$BUILTIN source
$FUNCTION source_builtin
$SHORT_DOC source filename [arguments]
Execute commands from a file in the current shell.
Read and execute commands from FILENAME in the current shell. The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.
Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
$END
$BUILTIN .
$DOCNAME dot
$FUNCTION source_builtin
$SHORT_DOC . filename [arguments]
Execute commands from a file in the current shell.
ただし、source
POSIXと互換性がないため、POSIXを使用してスクリプトを呼び出す場合は、代わりに/bin/sh
使用する必要があります。 POSIXはシェルを制限しないので、上記のすべてのスクリプトが機能します。.
source
個人的に私はいつも。.
代わりに.を使用しますsource
(私が書いた多くのスクリプトは.で実行されますcron
)。
答え2
これはPOSIXの定義の.dot
:
シェルは現在の環境でファイルのコマンドを実行する必要があります。
ファイルが含まれていない場合、
/<slash>
シェルは指定された検索パスを使用して$PATH
ファイルを含むディレクトリを見つけます。ただし、通常のコマンド検索とは異なり、ユーティリティ検索に.dot
必要なファイルはいいえ実行可能です。読み取り可能なファイルがないと、非対話型シェルは中断されます。対話型シェルは標準エラーに診断メッセージを記録する必要がありますが、この場合は構文エラーと見なすべきではありません。
[ -f ./file ] && source ./file
上記を考慮して完全に交換することをお勧めします. ./file
。ファイルが存在しない場合、最悪のシナリオはログイン時に通知を受け取ることです。私の考えでは、これはおそらくあなたが望む情報です。
もちろん、テストを維持するには、次のようにすることができます。
test -f ./file && . $_