别名“nautilus $(pwd)”未在 pwd 目录中打开

别名“nautilus $(pwd)”未在 pwd 目录中打开

~/.bash_aliases我正在使用 nautilus 文件管理器并使用以下行创建文件

alias naut="nautilus $(pwd) >/dev/null 2>&1 & disown;"

然后我执行

source ~/.bashrc

然后当我输入命令时naut,文件管理器不会在pwd目录中打开,而是在上次执行的目录中打开source ~/.bashrc。这很奇怪,因为当我创建别名时

alias naut="pwd; nautilus $(pwd) > /dev/null 2>&1 & disown;"

该命令naut始终返回我的实际工作目录,同时在另一个目录中打开 nautilus。

这怎么可能?

答案1

man bash

将字符括在双引号中会保留引号内所有字符的文字值,但启用历史扩展时的$`、 和 除外。字符和在双引号内保留其特殊含义。反斜杠仅在后跟以下字符之一时才保留其特殊含义: 、、、或 <newline>。可以在双引号内通过在双引号前面加上反斜杠来引用双引号。如果启用,除非使用反斜杠对双引号中的 进行转义,否则将执行历史扩展 。 之前的反斜杠不会被删除。\!$`$`"\!!

因此,您的定义$(pwd)在别名定义时被展开,而不是在执行时。在别名定义的右侧使用单引号。

另一方面,正如 Bharadwaj Raju 所观察到的,当前工作目录始终是.,因此nautilus "$(pwd)"与 相同nautilus .。并且您可能希望在 周围加上双引号$(pwd)

相关内容