〜/ .bashrcで、いくつかのエイリアスを定義しました。しかし、他のシェルスクリプトでは使用できません。そこでは、そこで定義されているエイリアスしか使用できません。 bashrcを入手したにもかかわらず、それでも機能しませんでした。私は何をすべきか?
PS。私はbashにいます。
shopt -s expand_aliases
を調達することに加えて、スクリプトで~/.bashrc
を実行する必要があります。
この問題が発生したので、このコマンドを使用してファイルをリロードして修正しました。
$ source ~/.bashrc
enzotib on ask ubuntuから盗まれました:エイリアスは非推奨になり、シェル関数が優先されます。 bash
のマニュアルページから:
ほとんどすべての目的で、エイリアスはシェル関数に置き換えられます。
関数を作成してサブシェルにエクスポートするには、~/.bashrc
に次のように入力します。
petsc() {
~/petsc-3.2-p6/petsc-Arch/bin/mpiexec "$@"
}
export -f petsc
次に、スクリプトからコマンドを自由に呼び出すことができます。
最も簡単な答えは、2つの重要なことを実行することです。そうしないと、機能しません。
#!/bin/bash -i
# Expand aliases defined in the Shell ~/.bashrc
shopt -s expand_aliases
この後、〜/ .bashrcで定義したエイリアスは、シェルスクリプト(giga.shまたはany.sh)で、およびそのようなスクリプト内の任意の関数または子シェルで使用できるようになります。
そうしないと、エラーが発生します。
your_cool_alias: command not found
実行する各スクリプトに行を追加せずにグローバルに実行する方法があります。BASH_ENV
変数を使用することです。
OS X10.8.5のセットアップは次のとおりです。
/etc/launchd.conf:
setenv BASH_ENV /Users/DK/.env
〜/ .bash_profile:
# == Bash setup for interactive shells ==
# === Environment for all shells ===
. $BASH_ENV
# [skipped]
〜/ .env:
# == Setup for all shells ==
# This is executed for all interactive and for non-interactive shells (e.g. scripts)
shopt -s expand_aliases extglob xpg_echo
# [skipped] Misc. variables and PATH setup
# === General aliases ===
alias pause='echo "Press [Return] or [Enter] to continue..."; read' # read -p does not display Prompt in Eclipse console
# [skipped]
.bashrc
は、インタラクティブシェルの環境を構成するという1つの目的を目的としています。 .bashrc
と他のスクリプトの間で共有したいコードがある場合、それは.bashrc
とシェルスクリプトのeachによって供給される別のファイルに属します。