Yol*_*Wex 15 alias users watch-command
因此,我制作了自定义的别名命令并尝试将其与 一起使用alias,但在与该命令连接时我的别名未被识别watch。
所以我试着把它写成一条线索,幸运的是,这个线索帮助了我。
但这是什么原因呢?
我在 my 中创建了一个别名.bashrc,效果非常好。
alias gpu='sensors nouveau-pci-0100'
alias cpu='sensors coretemp-isa-0000'
Run Code Online (Sandbox Code Playgroud)
当我连接watch并gpu喜欢这样时:
watch GPU
Run Code Online (Sandbox Code Playgroud)
我每 2 秒就会收到以下信息:
sh: 1: gpu: not found
Run Code Online (Sandbox Code Playgroud)
我就上面提到的线程解决了这个问题,如下所示:
alias = watchh='watch '
watchh gpu
Run Code Online (Sandbox Code Playgroud)
但为什么会出现这种情况呢?为什么它不能使用我明确定义的别名命令?
我的猜测是,这与用户有关,因为我已经root过一次,并且无法使用我的别名,但我确实需要专家来回答这个问题。
ste*_*ver 21
与用户无关。
别名仅在定义它们的交互式shell中扩展- 因此,如果您通过 定义它们,则为交互式 bash shell,或者如果您在例如~/.bashrc中定义它们,则为交互式 zsh shell 。~/.zshrc
该命令通过非交互式shellwatch调用命令。/bin/sh
通过给watch自身起别名,as alias watchh='watch '(带有尾随空格)然后使用watchh gpu,可以强制当前交互式 shell在传递给gpu 之前watch展开。
请注意,在 中zsh,别名可以定义为全局的,这允许它们在命令中的任何位置展开 - 避免需要watch使用尾随空格作为别名。
该watch命令不查找别名,仅查找搜索路径中的命令。作为替代方案,将gpu和定义cpu为 shell 脚本而不是别名,并将它们放在搜索路径中。然后你的watch gpu和watch cpu命令就会正常工作。
例如,如果$HOME/bin是搜索路径中的目录,则创建一个$HOME/bin/gpu包含以下行的文件:
sensors nouveau-pci-0100
Run Code Online (Sandbox Code Playgroud)
使文件可执行:
$ chmod +x $HOME/bin/gpu
Run Code Online (Sandbox Code Playgroud)
现在您就可以出发了!
$ watch gpu
Run Code Online (Sandbox Code Playgroud)
然后对 执行同样的操作cpu。