Почему мой $ PATH отличается от исполняемого скрипта?

Echo $ PATH внутри терминала gnome:

/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 / местные / бен: / Главная / рс / местные / бен: / USR / lib64 / МПИ / ССАГПЗ / OpenMPI / бен: / Главная / рс / бен: / USR / местные / бен: / USR / бен: / бен: / USR / bin / X11: / USR / X11R6 / бен: / USR / игры: / USR / lib64 / JVM / JRE / бен: / Главная / рс / Программирование / Программное обеспечение / туп: / Главная / рс / Программирование / Библиотеки / depottools: /home/pc/Programming/Libraries/apache-maven-3.0.4/bin

  • В редакторе строк ZSH, как вставить новую строку?
  • Zsh - назначение переменной не работает
  • Invoke zsh, запустив команду, а затем введите интерактивный режим вместо выхода
  • Как настроить цвет каталога 'ls' в разделе zsh
  • Повторная команда в выводе для приглашения Zsh
  • Изнутри этого скрипта:

    #!/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 

    / USR / lib64 / МПИ / ССАГПЗ / OpenMPI / бен: / Главная / рс / бен: / USR / местные / бен: / USR / бен: / бен: / USR / bin / X11: / USR / X11R6 / бен: / USR / игры: / USR / lib64 / JVM / JRE / бен

    Как вы можете видеть, я изменил свой файл .zshrc следующим образом:

    Export PATH = / home / pc / less.js / bin: $ PATH

    Почему это не работает в скрипте при выполнении в виде файла? Проблема в том, что команда lessc не найдена.

  • Invoke zsh, запустив команду, а затем введите интерактивный режим вместо выхода
  • Повторная команда в выводе для приглашения Zsh
  • Zsh - назначение переменной не работает
  • Как настроить цвет каталога 'ls' в разделе zsh
  • В редакторе строк ZSH, как вставить новую строку?
  • 2 Solutions collect form web for “Почему мой $ PATH отличается от исполняемого скрипта?”

    Сценарий запускается с использованием /bin/zsh , который не является интерактивной или логиной оболочкой и не загружает этот файл. От man zsh , акцент мой:

    Команды сначала считываются из / etc / zshenv; Это нельзя переопределить. Последующее поведение изменяется с помощью параметров RCS и GLOBAL_RCS; Первый влияет на все файлы запуска, а второй влияет только на файлы глобального запуска (те, которые показаны здесь, с пуском, начинающимся с /). Если одна из опций не установлена ​​в любой точке, любые последующие файлы (и) запуска соответствующего типа не будут считаны. Также возможно, чтобы файл в $ ZDOTDIR снова включил GLOBAL_RCS. По умолчанию установлены RCS и GLOBAL_RCS.

    Затем команды считываются из $ ZDOTDIR / .zshenv. Если оболочка является оболочкой входа, команды считываются из / etc / zprofile, а затем $ ZDOTDIR / .zprofile. Затем, если оболочка является интерактивной, команды считываются из / etc / zshrc, а затем $ ZDOTDIR / .zshrc . Наконец, если оболочка является оболочкой входа, читаются / etc / zlogin и $ ZDOTDIR / .zlogin.

    Сценарий наследует среду, из которой она вызывается, и если это не другая (интерактивная) оболочка, она не будет содержать настройки, заданные в .zshrc .

    Вы можете установить PATH где он применяется глобально (например, /etc/zshenv ), установить его явно в скрипте напрямую или изменить заголовок скрипта shebang для запуска /bin/zsh -i вместо этого, чтобы он загружал .zshrc (цитирование man zsh : Принудительно использовать оболочку для интерактивной работы. По-прежнему можно указать скрипт для выполнения. ).

    Кроме того, просто укажите полный путь к программе, которая не находится в PATH по умолчанию, например /home/pc/less.js/bin/lessc .

    Файлы запуска zsh (aka rc files)

    Недопустимое имя файла ниже, чем полный путь, неявно предшествует «$ ZDOTDIR /», который обычно является вашим домашним каталогом.

    Порядок, в котором файлы сценариев запуска zsh начинаются следующим образом.

    / Etc / zshenv – во-первых, команды читаются отсюда; Параметры не могут быть отменены.

    .zshenv

    / Etc / zprofile – оболочка входа

    .zprofile – оболочка входа

    / Etc / zshrc – интерактивная оболочка

    .zshrc – интерактивная оболочка

    / Etc / zlogin – оболочка входа

    .zlogin – оболочка входа

    Два параметра zsh влияют на то, что zsh использует некоторые из указанных файлов. («RCS» – это множественное число «rc», отображаемое в верхнем регистре.)

    Параметры RCS и GLOBAL_RCS zsh устанавливаются по умолчанию.

    • RCS – влияет на все файлы запуска
    • GLOBAL_RCS – затрагивает только глобальные файлы запуска (имена путей, начинающиеся с «/»)

    Если файл запуска отключает один из этих параметров, zsh пропускает последующие файлы запуска этого типа.

    Если загрузочный файл устанавливает параметр GLOBAL_RCS, zsh отправляет последующие файлы глобального запуска.

    Давайте будем гением компьютера.