在〜/ .bashrc中,我定义了一些别名。但是我不能在其他shell脚本中使用它们,在那里我只能使用那里定义的别名。即使我采购了bashrc,它仍然无效。我该怎么办?
PS。我在打击。
答案 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>