如何在其他脚本中使用.bashrc中定义的别名?

时间:2011-03-09 02:48:32

标签: bash alias

在〜/ .bashrc中,我定义了一些别名。但是我不能在其他shell脚本中使用它们,在那里我只能使用那里定义的别名。即使我采购了bashrc,它仍然无效。我该怎么办?

PS。我在打击。

6 个答案:

答案 0 :(得分:28)

除了采购shopt -s expand_aliases之外,您还需要在脚本中执行~/.bashrc

答案 1 :(得分:2)

我遇到了这个问题,我使用此命令重新加载文件来修复它。

$ source ~/.bashrc 

答案 2 :(得分:1)

来自enzotib的问题ubuntu:Alias不赞成使用shell函数。来自bash手册页:

  

对于几乎所有目的,别名都被shell函数取代。

要创建一个函数并将其导出到子shell,请将以下内容放入~/.bashrc

petsc() {
    ~/petsc-3.2-p6/petsc-arch/bin/mpiexec "$@"
}
export -f petsc

然后您可以从脚本中自由调用命令。

答案 3 :(得分:1)

最简单的答案是做两件重要的事情,或者它不会。工作

#!/bin/bash -i

# Expand aliases defined in the shell ~/.bashrc
shopt -s expand_aliases

在此之后,您在〜/ .bashrc中定义的别名将在您的shell脚本(giga.sh或any.sh)中以及此类脚本中的任何函数或子shell中可用。

如果你不这样做,你将收到错误:

your_cool_alias: command not found

答案 4 :(得分:0)

有一种方法可以全局完成,而无需为您执行的每个脚本添加行:使用BASH_ENV变量。

这是我对OS X 10.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]

答案 5 :(得分:0)

.bashrc仅用于一个目的:为交互式shell配置环境。如果您希望在.bashrc和其他脚本之间共享代码,则它属于单独的文件,该文件由 .bashrc和shell脚本的每个提供。< / p>