(我在OS X 10.11.4的终端应用程序中使用bash 3.2。)
我的.bashrc文件中有这一行:alias ll='ls -alFh'
我运行了echo ll > test && chmod +x test
来创建一个可执行的test
。下面是运行多个命令的结果,它们的退出代码(通过echo $?
),和标准输出:
test
退出代码1
没有产生stdout./test
退出代码127
产生./test: line 1: ll: command not found
. test
退出代码127
产生-bash: ????: command not found
. ./test
退出代码0
与手动运行ll
产生相同的结果
我知道退出代码1是通用错误,退出代码127意味着shell无法找到该命令。请问有人能够解释每种情况下都发生了什么以及为什么,包括对stdout的描述吗?我特别困惑于第3种情况中的????
。
test
,关闭了终端,启动了一个新的终端会话,并按照您给出的顺序执行命令,会发生什么? - undefinedtest
中添加一个shebang
来解决第二种情况,我猜.. 你可以使用type ll
来检查别名是否正常工作。 - undefinedtest2
,并将#!/bin/bash
添加为shebang,但仍然没有任何区别。 - undefined