如何在shell脚本中创建别名?

mai*_*ash 4 bash shell alias

在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脚本中定义别名,我需要做些什么?可能吗?

Bar*_*mar 9

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)

脚本通常使用函数,而不是别名.

  • 因为我敢打赌,一定有更好的方法来做你正在做的事情。这很可能是 XY 问题。 (3认同)