在Linux系统上定义别名非常简单.
从以下示例中我们看到:I_am_only_ls_aliasalias命令将输出作为ls命令提供给我们
# alias I_am_only_ls_alias=ls
# I_am_only_ls_alias
Run Code Online (Sandbox Code Playgroud)
输出:
file file1
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在bash脚本(define alias I_am_only_ls_alias)中做同样的事情时,我得到了I_am_only_ls_alias: command not found.
我的bash脚本示例:
alias_test.bash
#!/bin/bash
alias I_am_only_ls_alias=ls
I_am_only_ls_alias
Run Code Online (Sandbox Code Playgroud)
运行bash脚本 - alias_test.bash
/tmp/alias_test.bash
Run Code Online (Sandbox Code Playgroud)
输出:
/tmp/: line 88: I_am_only_ls_alias: command not found
Run Code Online (Sandbox Code Playgroud)
所以,首先我要问:
为什么不将bash识别I_am_only_ls_alias为别名?
为了在bash脚本中定义别名,我需要做些什么?可能吗?
从bash手册页:
当shell不是交互式时,别名不会扩展,除非使用
expand_aliasesshell设置shell选项shopt(请参阅shopt下面的SHELL BUILTIN命令下的说明).
所以这应该工作:
#!/bin/bash
shopt -s expand_aliases
alias I_am_only_ls_alias=ls
I_am_only_ls_alias
Run Code Online (Sandbox Code Playgroud)
脚本通常使用函数,而不是别名.
| 归档时间: |
|
| 查看次数: |
3622 次 |
| 最近记录: |