在 gnome 终端内回显 $PATH:
/home/pc/less.js/bin:/home/pc/local/bin:/home/pc/local/bin:/home/pc/.rvm/gems/ruby-1.9.2-head/bin:/ home/pc/.rvm/gems/ruby-1.9.2-head@global/bin:/home/pc/.rvm/rubies/ruby-1.9.2-head/bin:/home/pc/.rvm/bin :/usr/local/bin:/home/pc/local/bin:/usr/lib64/mpi/gcc/openmpi/bin:/home/pc/bin:/usr/local/bin:/usr/bin:/ bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib64/jvm/jre/bin:/home/pc/Programming/Software/tup:/home/pc/Programming/库/仓库工具:/home/pc/Programming/Libraries/apache-maven-3.0.4/bin
从这个脚本内部:
#!/bin/zsh
echo $PATH
while inotifywait -e modify /home/pc/vbox-shared/less; do
lessc custom.less > /home/pc/vbox-shared/less/custom.css
done
Run Code Online (Sandbox Code Playgroud)
/usr/lib64/mpi/gcc/openmpi/bin:/home/pc/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/ usr/游戏:/usr/lib64/jvm/jre/bin
正如你所看到的,我.zshrc用这个修改了我的文件:
导出路径=/home/pc/less.js/bin:$PATH
为什么它在作为文件执行时在脚本中不起作用?问题是没有找到 lessc 命令。
该脚本使用 运行/bin/zsh,它不是交互式或登录 shell,并且不会加载此文件。从man zsh,强调我的:
命令首先从 /etc/zshenv 读取;这不能被覆盖。后续行为由 RCS 和 GLOBAL_RCS 选项修改;前者影响所有启动文件,而后者只影响全局启动文件(此处显示的路径以 / 开头)。如果在任何时候未设置其中一个选项,则不会读取相应类型的任何后续启动文件。$ZDOTDIR 中的文件也可以重新启用 GLOBAL_RCS。RCS 和 GLOBAL_RCS 都是默认设置的。
然后从 $ZDOTDIR/.zshenv 读取命令。 如果 shell 是登录 shell,则从 /etc/zprofile 和 $ZDOTDIR/.zprofile 读取命令。然后,如果 shell 是交互式的,则从 /etc/zshrc 和 $ZDOTDIR/.zshrc 读取命令。最后,如果 shell 是登录 shell,则读取 /etc/zlogin 和 $ZDOTDIR/.zlogin。
该脚本从它被调用的地方继承了环境,如果这不是另一个(交互式)shell,它将不包含您在.zshrc.
您可以设置PATH全局应用的位置(例如/etc/zshenv),直接在脚本中显式设置它,或者更改shebang脚本头以运行/bin/zsh -i,使其加载.zshrc(引用man zsh:强制shell交互。仍然可以指定脚本执行。)。
或者,只需指定不在默认的程序的完整路径PATH,例如/home/pc/less.js/bin/lessc.
| 归档时间: |
|
| 查看次数: |
1498 次 |
| 最近记录: |