我知道我可以修改/ etc / profile ..但是有没有更好的方法? 我知道/ etc / profile会影响terminal,但我希望所有进程都受到影响。 crontab,服务pipe理器,启动脚本等。
编辑:我有一个答案编辑的Cron的path..但仍然希望启动脚本和可执行文件被调用服务pipe理。
您必须考虑上面的一些应用程序正在运行的环境。 运行这些types的命令与他们不期望的PATH有安全含义。 在PATH早期访问目录的恶意用户可以replace他们自己的命令并获得访问权限等。
启动脚本通常使用完整path来运行他们想要运行的命令(有些可能会设置一个受限制的PATH) – 这可以确保执行预期的命令。
当调用一个服务时,SCM不使用它使用清单的PATHS( /var/svc/manifest/... )。 清单是xml文件,包含定义如何与给定服务进行交互所需的所有信息。 同样,命令的完整path被用来确保预期的命令被执行。
您可以在/etc/default/cron设置一个默认的PATH (普通用户)或SUPATH (用于root用户)。 再次,您应该考虑这样做的安全隐患 – 使用命令的完整path以及如果需要命令定义自己的PATH会更好。
我相信,init传递给SMF的默认path和init脚本被编译成init二进制文件,不能改变。 它显式不从/ etc / default / init读取。
我同意@lain,你真的应该只使用完整的path到你想要的命令。 也就是说,大多数smf方法的源码是/lib/svc/share/smf_include.sh 。 你可以在那里改变PATHvariables,但是我会说这通常是一个坏主意。