在 Mac OS X 上,我向我的.bash_profile. 首先我使用了 ,但由于它是一个构建命令,我发现更合适。
我尝试过这些:
alias ='echo "build with fun."'
alias ='echo "build with tools."'
alias ='echo "build with style."'
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这不是一个有效的别名,正如 bash 报告的那样:
-bash: alias: `': invalid alias name
Run Code Online (Sandbox Code Playgroud)
这是为什么..?
由于某种原因,shell 希望引用该名称,因此相应地不允许将其作为别名。General.c:legal_alias_name()。
\n\n即使locale所有值都输出“en_US.UTF-8”也是如此。
尝试不同的表情符号:
\n\n~$ alias =\'echo oh bother\'\n~$ \noh bother\n~$ alias =\'echo build\'\nbash: alias: `\': invalid alias name\n--> 1\nRun Code Online (Sandbox Code Playgroud)\n\n为什么 shell 要引用这个名字?我的第一个猜测是 是来自 Unicode 7.0 而是来自 Unicode 6.0,我用 的行为ls来说服自己:
~$ touch \n~$ ls -b \n \\360\\237\\233\\240\nRun Code Online (Sandbox Code Playgroud)\n\n由于我可以在 Linux 上使用别名,但不能在 macOS 上使用,所以这看起来特别好,因为 macOS 附带了旧版本的 bash \xe2\x80\x94,即使我已经使用自制程序安装了最新版本。
\n\n为了测试这个理论,我也尝试了 Unicode 6.0:
\n\n$ alias ,=\'echo choo choo\'\nbash: alias: `,\': invalid alias name\n--> 1\nRun Code Online (Sandbox Code Playgroud)\n\n所以不是这样的!Linux 上的 bash 很乐意使用所有这些字符作为别名。(并且 的行为ls是一种转移注意力的行为,因为它会将 (7.0) 打印为 utf-8,但 Mac 上的 bash 会接受它作为别名。)
但别名函数似乎将字符串视为bytes,而不是字符,并且这两个失败都以 结尾0xA0,我知道这是 Latin-1 中的“不间断空格”。如果不跳入所有 C 宏声明,我敢打赌该字符会受到怀疑。
Mac$ alias $\'\\u00a0\'=foo \nbash: alias: `\xc2\xa0\': invalid alias name\n--> 1\nLinux$ alias $\'\\u00a0\'=foo\nLinux$ $\'\\u00a0\'\n\xc2\xa0: command not found\n--> 127\nRun Code Online (Sandbox Code Playgroud)\n\n显然,选择一个 UTF-8 编码不包含字节的字符A0。但我不知道为什么这个检查在我的 Linux 机器上被忽略。
| 归档时间: |
|
| 查看次数: |
2424 次 |
| 最近记录: |