因此,我制作了自定义别名命令并尝试将其与 一起使用,但在与命令alias
连接时无法识别我的别名。watch
所以我试着把它写成一条线,幸运的是,这条线帮助了我。
但这是什么原因呢?
我在.bashrc
其中创建了一个别名,效果很好。
alias gpu='sensors nouveau-pci-0100'
alias cpu='sensors coretemp-isa-0000'
当我连接watch
并gpu
像这样:
watch GPU
我每 2 秒得到一次:
sh: 1: gpu: not found
我解决了上面提到的线程,如下所示:
alias = watchh='watch '
watchh gpu
但是为什么会这样呢?为什么它不能使用我确定定义的别名命令?
我的猜测是与用户有关,因为我已经 root 过一次并且无法使用我的别名,但我肯定需要专家来回答这个问题。
与用户无关。
别名仅在为其定义的交互式shell 中扩展 - 因此,如果您通过 定义它们,则为交互式 bash shell
~/.bashrc
,或者如果您在其中定义别名,则为交互式 zsh shell~/.zshrc
。该
watch
命令通过非交互式/bin/sh
外壳调用命令。通过将自身别名化
watch
, asalias watchh='watch '
(带有尾随空格)然后使用watchh gpu
,您可以强制当前交互式 shellgpu
在传递到watch
.请注意,在 中
zsh
,别名可以定义为全局的,这允许它们在命令中的任何位置展开 - 避免watch
使用尾随空格进行别名的需要。该
watch
命令不查找别名,只查找搜索路径中的命令。作为替代方案,将gpu
和定义cpu
为 shell 脚本而不是别名,并将它们放在您的搜索路径中。然后你的watch gpu
和watch cpu
命令就可以正常工作了。例如,如果
$HOME/bin
是搜索路径中的目录,则创建一个$HOME/bin/gpu
包含以下行的文件:使文件可执行:
你准备好了!
然后对
cpu
.