Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 当alias';它由一个变量调用_Linux_Bash_Shell_Alias - Fatal编程技术网

Linux 当alias';它由一个变量调用

Linux 当alias';它由一个变量调用,linux,bash,shell,alias,Linux,Bash,Shell,Alias,我添加了一个别名: $ alias anyalias="echo kallel" 如果我执行: $ anyalias kallel 它执行echo命令时没有任何问题 现在,如果我这样定义一个变量: $ var="anyalias" $ $var -ash: anyalias: not found 然后以这种方式执行: $ var="anyalias" $ $var -ash: anyalias: not found 然后我得到了一个shell错误 如何使$var运行anyalia

我添加了一个别名:

$ alias anyalias="echo kallel"
如果我执行:

$ anyalias
kallel
它执行
echo
命令时没有任何问题

现在,如果我这样定义一个变量:

$ var="anyalias"
$  $var
-ash: anyalias: not found
然后以这种方式执行:

$ var="anyalias"
$  $var
-ash: anyalias: not found
然后我得到了一个shell错误

如何使
$var
运行
anyalias
别名中定义的命令


我不想改变调用
$var
的方式。但我正在寻找一种改变别名定义或导出它的方法。

而不是别名,考虑使用函数:

anyfunc() { echo "kallel"; }
v=anyfunc
$v
kallel
更安全的方法是将函数调用存储在数组中(如果需要,还将存储参数):


这是因为别名扩展在参数扩展之前执行:

如您所见,您可以使用
eval
再次完成此过程,即。
相反,您可以使用@anubhava的替代方案


例子
再次小心地使用
eval
。这只是为了说明扩展过程。

我希望更改别名定义,而不是$var的调用。在这种情况下,只需将函数命名为相同的名称,即
anyalias(){echo“kallel”;}
然后相同的
var
定义就会起作用。“我希望更改别名定义,而不是$var的调用”。你不能,
alias
不是那样工作的。@msw实际上我真正的问题是:我想在调用ls命令时执行一个脚本。因此我添加了一个别名ls:
alias ls=“/root/myscript.sh;ls”
。当我直接调用这个别名时,它将被成功地exexute。但是如果我调用wil变量,那么它将不会像我预期的那样执行此问题已被以下问题取代: