gpt4 book ai didi

bash - 在 nohup 中使用别名

转载 作者:行者123 更新时间:2023-11-29 08:51:28 26 4
gpt4 key购买 nike

为什么以下不起作用?

$ alias sayHello='/bin/echo "Hello world!"'
$ sayHello
Hello world!
$ nohup sayHello
nohup: appending output to `nohup.out'
nohup: cannot run command `sayHello': No such file or directory

(我问这个问题的原因是因为我将我的 perlpython 别名为不同的 perl/python 二进制文件,这些二进制文件针对我自己的目的进行了优化;但是,如果我不提供我的 perl/python 二进制文件的完整路径,nohup 会给我带来麻烦)

最佳答案

因为 shell 不会将别名传递给子进程(除非您使用 $() 或 ``)。

$ 别名 sayHello='/bin/echo "Hello world!"'

现在一个别名在这个 shell 进程中是已知的,这很好,但只在这个 shell 进程中有效。

$ sayHello 

Hello world!

由于您在同一个 shell 中说“sayHello”,所以它起作用了。

$ nohup sayHello

此处,程序“nohup”作为子进程启动。因此,它不会收到别名。然后它启动子进程“sayHello”——找不到。

对于您的特定问题,最好使新的“perl”和“python”看起来尽可能像普通的一样。我建议设置搜索路径。

在你的 ~/.bash_profile 添加

export PATH="/my/shiny/interpreters/bin:${PATH}"

然后重新登录。

由于这是一个环境变量,它传递给所有子进程,无论它们是否是 shell - 它现在应该经常工作。

关于bash - 在 nohup 中使用别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9301531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com