Работа с экспортом странного поведения PATH CentOS

Я пытаюсь изменить переменную PATH в двух разных сценариях, расположенных в /etc/profile.d/

Перезагружая CentOS и проверяя переменную PATH (отредактированную), $ PATH изменяется дважды!

 []$ echo $PATH /usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin: /usr/local/mysql/bin:/usr/local/php/bin:/home/IntUser/bin:/usr/local/mysql/bin: /usr/local/php/bin []$ 

В корневом режиме:

 []$ su Password: []# 

$ PATH изменяется 3 раза!

 []# echo $PATH /usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin: /usr/local/mysql/bin:/usr/local/php/bin:/home/IntUser/bin:/usr/local/mysql/bin: /usr/local/php/bin:/usr/local//mysql/bin:/usr/local/php/bin []# 

Почему он не назначается только один раз?

  • Как найти именно этот исполняемый файл, который будет запущен, если это имя введено в командной строке?
  • Если PATH содержит $ HOME / mydir и добавляет его, если нет (все в скрипте)
  • искать команду в PATH с тем же именем скрипта
  • Команда moc не найдена?
  • Проблема с прохождением пути, содержащего пробелы и скобки
  • Терминалу иногда не удается найти исполняемые файлы в локальном каталоге
  • Пути, относящиеся к компиляции из источника
  • Добавить каталог в путь для всех оболочек и пользователей в SLES 11.1
  • 2 Solutions collect form web for “Работа с экспортом странного поведения PATH CentOS”

    Вот исправление: замените содержимое файла /etc/profile.d/php.sh :

     pathmunge /usr/local/php/bin after 

    и аналогично для файла /etc/profile.d/mysql.sh :

     pathmunge /usr/local/mysql/bin after 

    Объяснение состоит в том, что файлы в файле /etc/profile.d/*.sh получены из файла /etc/profile (который сам по себе используется оболочкой bash для входа в систему).

    Поскольку файлы получены, они являются частью /etc/profile поэтому они могут использовать любые переменные и функции в этом файле. pathmunge – такая функция (в моей федерации 20 в любом случае), единственной целью которой является добавление нового каталога в PATH , но только если он еще не существует. Ключевое слово after добавляет новый каталог в конец PATH .

    Следовательно, у вас не будет дубликатов. Однако я не знаю, почему у вас их есть.

    Это происходит потому, что что-то в вашей конфигурации загружает /etc/profile несколько раз. Вам нужно найти его и исправить.

    Файл /etc/profile читается оболочкой входа. Он также читается при входе в графический сеанс на многих платформах (но это зависит от диспетчера дисплея, диспетчера сеансов и от того, как настроен ваш дистрибутив).

    Одна из возможных проблем заключается в том, что вы запрашиваете /etc/profile для чтения из другого места, например ~/.bashrc . Если это так, удалите его. Запустите grep -s profile ~/.* чтобы увидеть потенциальных преступников. Поскольку запуск su читает /etc/profile , должен быть хотя бы один экземпляр этой проблемы, возможно, с .bashrc .

    Другая возможная проблема заключается в том, что вы запускаете оболочку входа, когда вы открываете терминал в сеансе графического интерфейса. Исправление состоит в том, чтобы не запускать оболочку входа – вы уже вошли в сеанс графического интерфейса пользователя, а терминал является обычным приложением.

    Учитывая, что у вас есть одно вхождение каталогов перед /home/IntUser/bin и другое после того, как второй /home/IntUser/bin /etc/profile читается после части, которая добавляет /home/IntUser/bin .

    В качестве альтернативы, если вы не хотите исправлять свою конфигурацию, вы можете добавить каталог в PATH, только если его уже нет.

     case :$PATH: in *:/usr/local/php/bin:*) :;; *) PATH=$PATH:/usr/local/php/bin;; esac 
    Interesting Posts

    Как запустить источник с помощью docker exec?

    Как Firefox и Chrome отображают изображения JPEG в Linux?

    Почему строки вывода grep, похоже, не соответствуют выражению?

    Есть ли разница между `;` и `&&` и `|`?

    Есть ли инструмент, который я могу использовать для создания диаграммы архитектуры моей системы?

    MySQL с 5.1 до 5.5: все символы UTF-8 потеряны!

    Могу ли я преобразовывать поля в XML в теги с помощью xmlstarlet?

    SSH попытки входа в минуту на каждый IP-адрес

    Оболочка – опция

    Автоматическая загрузка SFTP с завитком

    Как сделать элементы управления более крупными в gnome 3 для лучшего просмотра и просмотра на экранах HDPI?

    Как я могу разбить USB-накопитель так, чтобы он был загрузочным и имел Windows-совместимый раздел хранения данных?

    почему бы нагрузка равна 5, если в runq есть нулевые процессы?

    Как заставить команду diff игнорировать некоторые строки второго файла (bash)?

    Права доступа к Linux vsftpd

    Linux и Unix - лучшая ОС в мире.