创建Bash脚本时,我在开始定义PATH
环境变量时一直有一条线。我最近发现,这不会使脚本非常便于使用,因为对于不同版本的Linux,PATH
变量是不同的(在我的情况下,我将脚本从Arch Linux移动到了Ubuntu并收到错误,因为各种可执行文件并不相同地方)。将PATH环境变量导入到使用cron启动的Bash脚本中
是否可以将登录shell定义的PATH
环境变量复制到当前的Bash脚本中?
编辑: 我看到我的问题已经引起导致一些思考,我想改变登录shell的PATH
环境变量有一个bash脚本,这是完全相反的一些困惑是什么我想要。
这是我现在有在我的Bash脚本的一个顶部:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
# Test if an internet connection is present
wget -O /dev/null google.com
我要替换的东西,第二行副本的PATH
从登录shell价值到脚本环境:
#!/bin/bash
PATH=$(command that copies value of PATH from login shell)
# Test if an internet connection is present
wget -O /dev/null google.com
编辑2:对不起,我的这一重大遗漏。我忘了提到正在讨论的脚本正在通过cron按计划运行。 Cron创建它自己的环境来运行不使用登录shell的环境变量或修改它们的脚本。我刚刚尝试在cron中运行以下脚本:
#!/bin/bash
echo $PATH >> /home/user/output.txt
结果如下。正如你所看到的,由cron使用的PATH
变量是登录shell不同:
[email protected]_router:~$ cat output.txt
/usr/bin:/bin
[email protected]_router:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
你为什么要这么做? –
在Mac OS X上,'/ etc/profile'包含:'if [-x/usr/libexec/path_helper];然后评估'/ usr/libexec/path_helper -s'; fi'。这设置了'PATH'和'MANPATH'。您可以在U&L和SU上找到关于'path_helper'的问题 - 所提到的速度问题已经解决(少数 - 如10.11.6中的8-10毫秒)。在'/ etc/paths.d'中查找可能在Linux上?但问题在于 - 你为什么要修改PATH?我可能对我应该使用哪个版本的命令有自己的看法;这就是我的PATH设置。当然,如果我打破了你的剧本,责任就在我身上解决它。 –
恐怕你们两个都误解了我的要求。我编辑了我的问题,希望能够澄清事情。 – XJDHDR