我想设置一个像这样的别名:
alias hi='TEST=ok echo $TEST'
但是,它似乎无法可靠地运作。
我从:
开始unalias hi
unset TEST
然后:
$ alias hi="TEST=ok echo $TEST"
$ hi
$
这是在MacOSX上:
$ bash --version
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)
Copyright (C) 2005 Free Software Foundation, Inc.
答案 0 :(得分:2)
问题与别名无关。只需运行
$ TEST=ok echo $TEST
$
不会回显任何内容(换行符除外),因为在运行echo命令之前,shell会扩展$ TEST。
该声明中按顺序发生了三件事:
$TEST
已展开TEST
被指定为'ok'echo
(在其环境中使用TEST = ok)按照ghostdog74(TEST=ok ; echo $TEST
)的建议在赋值和echo命令之间放置分号会导致赋值为在echo命令之前执行的单独shell命令。然后,shell可以在第二个命令中展开$TEST
,因为它已经设置好了。
答案 1 :(得分:1)
alias hi='TEST=ok ;echo $TEST'
答案 2 :(得分:0)
为了完整性:
$ echo 'echo $TEST'>echotest
$ unset $TEST
$ TEST=ok . ./echotest
ok
$ chmod u+x echotest
$ TEST=ok ./echotest
ok
$ echo $TEST
$
在这种情况下,设置TEST=ok
会修改脚本echotest
的环境,该脚本在其运行之前不会展开其中的$TEST
。