为什么以下不起作用?
$ 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
(我问这个问题的原因是因为我已经别名了我的perl
and python
到不同的 perl/python 二进制文件,这些二进制文件是为了我自己的目的而优化的;但是,如果我不提供 perl/python 二进制文件的完整路径,nohup 会给我带来麻烦)
因为 shell 不会将别名传递给子进程(除非您使用 $() 或 ``)。
$ alias sayHello='/bin/echo "Hello world!"''
现在这个 shell 进程中已经知道了一个别名,这很好,但只能在这个 shell 进程中起作用。
$ sayHello
Hello world!
由于您在同一个 shell 中说了“sayHello”,所以它起作用了。
$ nohup sayHello
这里,程序“nohup”作为子进程启动。因此,它不会收到别名。
然后它启动子进程“sayHello” - 未找到该进程。
对于您的具体问题,最好使新的“perl”和“python”尽可能看起来像普通的。我建议设置搜索路径。
In your ~/.bash_profile
add
export PATH="/my/shiny/interpreters/bin:${PATH}"
然后重新登录。
由于这是一个环境变量,因此will传递给所有子进程,无论它们是否是 shell - 它现在应该经常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)