bash 脚本是否通过引用设置变量?
does bash script set variables by reference?
我正在尝试设置一些新的别名,但遇到了一个奇怪的别名。
alias l="ls"
alias ls="ls -alGh"
我想将默认文件列表缩短为 L
并将 all info 设置为默认值 LS
,但我只曾经得到的是:
~ Desktop $ unalias ls
~ Desktop $ unalias l
~ Desktop $ source ~/.bash_aliases
~ Desktop $ l
total 8
drwxr-xr-x 3 astagl staff .
drwxr-xr-x 34 astagl staff ..
-rw-r--r-- 1 astagl staff 2015-06-07_10.50.54.inline editor.html
~ Desktop $ ls
total 8
drwxr-xr-x 3 astagl staff .
drwxr-xr-x 34 astagl staff ..
-rw-r--r-- 1 astagl staff 2015-06-07_10.50.54.inline editor.html
~ Desktop $
上面的目录列表:我首先清除别名,只是为了重新开始并获取我的别名脚本,其中包括第一个列出的代码块。这里有某种奇怪的变量 referencing 吗?
解决方案
使用反斜杠似乎可以解决问题:
alias l="\ls -a"
alias ls="\ls -al"
扩展别名时,可能会递归调用其他别名。为避免这种情况,您需要使用反斜杠转义别名中的命令:
alias l="\ls"
alias ls="\ls -alGh"
我正在尝试设置一些新的别名,但遇到了一个奇怪的别名。
alias l="ls"
alias ls="ls -alGh"
我想将默认文件列表缩短为 L
并将 all info 设置为默认值 LS
,但我只曾经得到的是:
~ Desktop $ unalias ls
~ Desktop $ unalias l
~ Desktop $ source ~/.bash_aliases
~ Desktop $ l
total 8
drwxr-xr-x 3 astagl staff .
drwxr-xr-x 34 astagl staff ..
-rw-r--r-- 1 astagl staff 2015-06-07_10.50.54.inline editor.html
~ Desktop $ ls
total 8
drwxr-xr-x 3 astagl staff .
drwxr-xr-x 34 astagl staff ..
-rw-r--r-- 1 astagl staff 2015-06-07_10.50.54.inline editor.html
~ Desktop $
上面的目录列表:我首先清除别名,只是为了重新开始并获取我的别名脚本,其中包括第一个列出的代码块。这里有某种奇怪的变量 referencing 吗?
解决方案
使用反斜杠似乎可以解决问题:
alias l="\ls -a"
alias ls="\ls -al"
扩展别名时,可能会递归调用其他别名。为避免这种情况,您需要使用反斜杠转义别名中的命令:
alias l="\ls"
alias ls="\ls -alGh"