Questions tagged «path»

PATH(全部大写)是类Unix操作系统,DOS,OS / 2和Microsoft Windows上的环境变量的名称,指定一组目录,在目录中搜索可执行程序。


7
cron执行作业时,“工作目录”是什么?
当我从命令行运行它时,我有一个可以运行的脚本,但是当我对其进行计划时,却cron收到了无法找到文件或命令的错误。我的问题是双重的: 当我使用计划Cron作业时crontab -e,它是否使用我的用户ID作为其权限的基础?还是使用某种cron用户ID及其相关权限? 启动cron作业时,工作目录是什么?是我指定要运行脚本的目录,还是其他目录? 这是我的Cron工作: 15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh 这是实际的脚本: vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`" echo "$vIP_ADDR" sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt ssmtp XXXXX@gmail.com < emailmsg.txt 这是我查看mail产生的消息时遇到的错误cron: sed: can't read template.txt: No such file or directory /home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found 它找不到,template.txt但与脚本位于同一目录中。它也无法运行ssmtp,但是我可以作为用户。我缺少什么让它正常工作?


7
如何使`sudo`保留$ PATH?
我需要运行安装在/ opt / godi / sbin(自定义目录)上的程序。如果我将该目录添加到我的PATH中,则将以下行添加到我的.bashrc文件中 export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin 那么我可以尝试正常运行该命令(但由于需要sudo而失败)。但是,当我尝试使用sudo时: sudo godi_console 我收到以下错误 sudo: godi_console: command not found 在使用sudo之后检查PATH变量显示,该变量不包括我与普通用户相同的PATH: $ sudo sh # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 为什么路径不一样?难道我做错了什么?我正在使用Debian Jessie,很不幸,我无法通过将sudo传递到godi_console的绝对链接来解决此问题,因为godi_console本身也取决于正确设置的PATH。
123 sudo  path 


3
添加安全吗?到我的路径?怎么会?
我看到人们在其他 答案中提到在环境变量中包含当前工作目录(' .')是一个坏主意$PATH,但是还没有找到专门解决该问题的问题。 那么,为什么我不应该添加.我的路径呢?如果尽管我发出了所有警告,我仍然要注意什么?将其添加到末尾比开始更安全吗?
49 path 

16
使用awk命令删除重复的$ PATH条目
我试图编写一个bash shell函数,该函数将允许我从PATH环境变量中删除目录的重复副本。 有人告诉awk我,可以使用命令使用一行命令来实现此目的,但是我不知道该怎么做。有人知道吗?
48 bash  shell  awk  path 

5
$ PATH中的重复条目有问题吗?
我从几个朋友那里得到bashrc。因此,我最终在$ PATH变量中有重复的条目。我不确定这是否是长时间启动命令的问题。$ PATH在bash中如何内部工作?有更多的路径会减慢我的启动时间吗?
45 bash  path 

4
以易于理解的方式显示PATH
我想以更易于理解的方式显示PATH环境变量。 $ echo $PATH /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin:/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/bin:/usr/local/git/bin:/Users/arturo/.gvm/groovy/current/bin:/Users/arturo/.gvm/grails/current/bin:/Users/arturo/.gvm/griffon/current/bin:/Users/arturo/.gvm/gradle/current/bin:/Users/arturo/.gvm/lazybones/current/bin:/Users/arturo/.gvm/vertx/current/bin:/Users/arturo/.gvm/bin:/Users/arturo/.gvm/ext:/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin 我在想这样的事情: $ echo $PATH | some cut and awk magic /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin /Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin /Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin /Users/arturo/.rvm/bin ...

2
哪些发行版的$ PATH中有$ HOME / .local / bin?
示例:在Ubuntu中,.local主目录中始终有一个目录,其中.profile包括以下行: PATH="$HOME/bin:$HOME/.local/bin:$PATH" $HOME/.local/bin默认情况下不存在,但是如果创建了它,则已经存在$PATH并且可以找到其中的可执行文件。 XDG目录规范中并未确切提及,但似乎是从中衍生出来的。 我想知道的是,这是否足够普遍,通常可以假定它存在于最常见的最终用户发行版中。例如,在所有的Debian衍生产品中,还是至少在Ubuntu中,是这样吗?红帽/ Fedora / CentOS生态系统怎么样?诸如此类,例如Arch,Suse以及人们在使用什么。 需要特别清楚的是,这仅用于$HOME/.local/bin,而不是 $HOME/bin。 出于好奇,如果您有此信息,请随时包括BSD,OS / X和其他文件。:)

7
通过sudo和su运行时,为什么PATH变量不同?
在我的fedora VM上,使用用户帐户运行时/usr/local/bin,我的路径是: [justin@justin-fedora12 ~]$ env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin 同样在运行时su: [justin@justin-fedora12 ~]$ su - Password: [root@justin-fedora12 justin]# env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin 但是,当通过运行时sudo,该目录不在路径中: [root@justin-fedora12 justin]# exit [justin@justin-fedora12 ~]$ sudo bash [root@justin-fedora12 ~]# env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin 为什么通过via运行时路径会有所不同sudo?


3
如何在所有路径中摆脱Cygwin的/ cygdrive前缀?
我从Git for Windows附带的bash shell切换到Cygwin,遇到一个奇怪的问题。有人认为添加/cygdrive/所有路径将是一个好主意,而我认为这是一个非常丑陋的主意。我已经确定可以通过添加来部分解决此问题 mount --change-cygdrive-prefix / export HOME=/c/Users/BZISAD0 在我的.bashrc中,但是如果我看一下PATH变量,所有内容仍然都包含/ cygdrive /。我想我可以写一个脚本来修复PATH,但这比我已经做的还要麻烦。我们有了一个更好的办法,我敢确信那里是因为Git的bash shell中使用(据我所知)旧版本的Cygwin,它以某种方式配置为不前插/cygdrive无处不在。那么,如何将“吸盘”旋钮调到零?
36 path  cygwin  bashrc 

2
cron的PATH设置在哪里?
Cron不会使用crontab而是拥有自己的crontab的用户的路径。可以通过PATH=/foo/bar在crontab的开头添加内容来轻松更改它,经典的解决方法是始终使用绝对路径访问cron运行的命令,但是cron的默认PATH在哪里定义? 我在Arch系统(cronie 1.5.1-1)上创建了具有以下内容的crontab,并在Ubuntu 16.04.3 LTS盒上进行了测试,结果相同: $ crontab -l * * * * * echo "$PATH" > /home/terdon/fff 打印: $ cat fff /usr/bin:/bin 但为什么?系统范围的默认路径是在中设置的/etc/profile,但其中包括其他目录: $ grep PATH= /etc/profile PATH="/usr/local/sbin:/usr/local/bin:/usr/bin" /etc/environment或中没有其他相关内容,/etc/profile.d我认为cron可能会读取其他文件: $ grep PATH= /etc/profile.d/* /etc/environment /etc/profile.d/jre.sh:export PATH=${PATH}:/usr/lib/jvm/default/bin /etc/profile.d/mozilla-common.sh:export MOZ_PLUGIN_PATH="/usr/lib/mozilla/plugins" /etc/profile.d/perlbin.sh:[ -d /usr/bin/site_perl ] && PATH=$PATH:/usr/bin/site_perl /etc/profile.d/perlbin.sh:[ -d /usr/lib/perl5/site_perl/bin ] && PATH=$PATH:/usr/lib/perl5/site_perl/bin …
34 cron  path 

7
引用与$ PATH中的脚本相同目录下的文件
我有一个bash脚本文件,该文件放在添加到$ PATH的某个目录下,以便可以从任何目录调用该脚本。 在与脚本相同的目录下还有另一个文本文件。我想知道如何在脚本中引用文本文件吗? 例如,如果脚本仅用于输出文本文件的内容,cat textfile则将不起作用,因为当从其他目录调用脚本时,找不到文本文件。
33 bash  path 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.