为什么别名有时像nameref一样起作用,有时却不起作用?

提姆

我从https://unix.stackexchange.com/a/383825/674注意到一个示例

$ alias foo=bar
$ foo () { blah "$@"; }
$ type -a foo bar  
foo is aliased to `bar'
bar is a function
bar ()
{
    blah "$@"
}

因此,重新定义别名foo实际上就是重新定义了别名命令bar这就像nameref一样,即具有引用属性的变量。

我对以下示例进行了更多实验。

  • 为什么mya=cat不重新别名myacat,也重新定义了别名echocat

  • 为什么像nameref一样mya () { cat test.sh; }将别名重新定义为echo函数?

谢谢。

$ alias mya=echo
$ type mya
mya is aliased to `echo'
$ mya abc  # mya behaves exactly as echo
abc

$ mya=cat
$ type mya
mya is aliased to `echo'
$ mya test.sh # mya=cat doesn't alias mya to cat
test.sh


$ mya () { cat test.sh; }
$ type mya
mya is aliased to `echo'
$ mya  # Redefining mya as a function works, by outputing the content of test.sh
#! /usr/bin/env bash
echo $_
echo $0
$ echo # Redefining mya also redefines the aliased echo, just like a nameref
#! /usr/bin/env bash
echo $_
echo $0
巴尔玛

当别名是命令中的第一个单词时,别名将被扩展。因此,当您键入:

alias foo=bar
foo () { blah "$@"; }

别名foo已展开,因此将其视为您键入的内容:

bar () { blah "$@"; }

当您输入时:

alias mya=echo
mya=cat

命令中的第一个单词是mya=cat,而不仅仅是mya,因此别名不会扩展。=不是单词定界符,它只是变量赋值中变量和值之间的定界符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么此URLClassLoader有时起作用而有时却不起作用?

来自分类Dev

为什么有时重定向(>)有时不起作用,而附加(>>)却起作用?

来自分类Java

为什么有时不起作用?

来自分类Dev

为什么提供程序有时不起作用?

来自分类Dev

为什么 Django 中的 POST 请求有时会起作用,而有时却不起作用?(这几乎是随机的)

来自分类Dev

为什么 UseState 有时在我的代码中有时不起作用

来自分类Dev

Ajax有时不起作用

来自分类Dev

crontab有时不起作用

来自分类Dev

为什么有时某些键盘键不起作用,而另一些时候却起作用?

来自分类Dev

功能ord有时仅起作用,但有时不起作用

来自分类Dev

为什么粘贴有时在 gnome-terminal 中不起作用?

来自分类Dev

为什么@PostFilter有时在Spring Security服务中不起作用?

来自分类Dev

为什么自动完成有时在 python IDE 中不起作用

来自分类Dev

为什么有时npm install在Mac上不起作用?

来自分类Dev

为什么map [time.Time]字符串有时不起作用?

来自分类Dev

为什么 regex 在 javascript 中有时不起作用?

来自分类Dev

python-打印换行符有时不起作用。为什么?

来自分类Dev

吱吱作响的小话,为什么有时简化的方法不起作用?

来自分类Dev

为什么有时变量分配在列表上不起作用

来自分类Dev

为什么php strpos()有时对Unicode字符不起作用?

来自分类Dev

为什么我的带脚本的Button有时不起作用?

来自分类Dev

为什么有时urllib.request.urlopen不起作用,但浏览器起作用?

来自分类Dev

为什么有些别名在xterm中起作用,而另一些别名却不起作用?

来自分类Dev

UITableview contentoffset有时不起作用

来自分类Dev

表单提交按钮有时不起作用

来自分类Dev

Laravel有时验证规则不起作用

来自分类Dev

子域有时不起作用

来自分类Dev

鼠标单击有时不起作用

来自分类Dev

立体校正有时不起作用

Related 相关文章

  1. 1

    为什么此URLClassLoader有时起作用而有时却不起作用?

  2. 2

    为什么有时重定向(>)有时不起作用,而附加(>>)却起作用?

  3. 3

    为什么有时不起作用?

  4. 4

    为什么提供程序有时不起作用?

  5. 5

    为什么 Django 中的 POST 请求有时会起作用,而有时却不起作用?(这几乎是随机的)

  6. 6

    为什么 UseState 有时在我的代码中有时不起作用

  7. 7

    Ajax有时不起作用

  8. 8

    crontab有时不起作用

  9. 9

    为什么有时某些键盘键不起作用,而另一些时候却起作用?

  10. 10

    功能ord有时仅起作用,但有时不起作用

  11. 11

    为什么粘贴有时在 gnome-terminal 中不起作用?

  12. 12

    为什么@PostFilter有时在Spring Security服务中不起作用?

  13. 13

    为什么自动完成有时在 python IDE 中不起作用

  14. 14

    为什么有时npm install在Mac上不起作用?

  15. 15

    为什么map [time.Time]字符串有时不起作用?

  16. 16

    为什么 regex 在 javascript 中有时不起作用?

  17. 17

    python-打印换行符有时不起作用。为什么?

  18. 18

    吱吱作响的小话,为什么有时简化的方法不起作用?

  19. 19

    为什么有时变量分配在列表上不起作用

  20. 20

    为什么php strpos()有时对Unicode字符不起作用?

  21. 21

    为什么我的带脚本的Button有时不起作用?

  22. 22

    为什么有时urllib.request.urlopen不起作用,但浏览器起作用?

  23. 23

    为什么有些别名在xterm中起作用,而另一些别名却不起作用?

  24. 24

    UITableview contentoffset有时不起作用

  25. 25

    表单提交按钮有时不起作用

  26. 26

    Laravel有时验证规则不起作用

  27. 27

    子域有时不起作用

  28. 28

    鼠标单击有时不起作用

  29. 29

    立体校正有时不起作用

热门标签

归档