我有一个perl脚本,在代码中的某处调用ps -ef
。此脚本适用于Linux,但不适用于Solaris 5.10。我的工作是在我的.profile中定义一个别名:
ps_wrapper()
{
if [[ $1 = "-ef" ]]; then
/usr/ucb/ps auxwwww
else
/usr/ucb/ps $1
fi
}
alias ps=ps_wrapper
问题是perl脚本中没有别名。如何让脚本看到这个别名?
答案 0 :(得分:5)
ps_wrapper
只是您的shell已知的别名,而不是在其下运行的程序。有很多方法可以做你想在这里完成的事情:
ps_wrapper
脚本并将其放在PATH
POSIX::uname()
检查Perl脚本中的操作系统,并相应地形成ps
命令行。ps
功能的模块(this one,可能吗?)。还有一些想法:
PS_PERSONALITY
环境变量可用于设置ps
“个性。”ps
遵守POSIX / XPG / SUS,因此通过坚持ps
命令行的SUS语义,您可以(理论上)获得相同的命令行并输出两个系统。答案 1 :(得分:1)
shell别名无法帮助您使用perl脚本。只需将解决方法移到perl脚本中,就可以了。如果您不想在脚本中添加hack,请使用perl模块Proc::ProcessTable
之类的东西,它(希望)可以在您的目标平台上运行。
答案 2 :(得分:0)
如果您想使用bash -ic
中的别名,可以运行.bashrc
。
例如:
$ grep hello ~/.bashrc
alias hello='echo hello'
$ bash -ic 'hello'
hello