.bashrc не экспортирует путь?

Каждый раз, когда я вхожу в систему в кластер нашей компании, я сначала получаю билет Kerberos, а затем пытаюсь отправить задание, но он не находит искру-ubmit:

-bash-4.1$ ./pipeline.runtime/scripts/vpspark-submit.sh crow-env/ /user/gsamaras/crow_spm-1.0.2.3.tar.gz --properties-file $SPARK_CONF_PROPERTIES --num-executors 1 foo.py ./pipeline.runtime/scripts/vpspark-submit.sh: line 51: spark-submit: command not found 

Если, однако, я источник .bashrc, он работает нормально.

 >> cat .bashrc [ -f /etc/bashrc ] && . /etc/bashrc export PATH=${SPARK_HOME}/bin:$PATH export SPARK_CONF_DIR=~/tripodrt-spark/conf/ export SPARK_CONF_PROPERTIES=~/tripodrt-spark/conf/spark-overrides-tt.conf и >> cat .bashrc [ -f /etc/bashrc ] && . /etc/bashrc export PATH=${SPARK_HOME}/bin:$PATH export SPARK_CONF_DIR=~/tripodrt-spark/conf/ export SPARK_CONF_PROPERTIES=~/tripodrt-spark/conf/spark-overrides-tt.conf 

Зачем? Я бы ожидал, что .bashrc запускается при входе в систему. Я нахожусь в Red Hat Enterprise Linux.

One Solution collect form web for “.bashrc не экспортирует путь?”

Из руководства bash :

Когда запущена интерактивная оболочка, которая не является оболочкой входа, bash считывает и выполняет команды из ~/.bashrc , если этот файл существует.

Поэтому, если ваша оболочка является оболочкой входа, ~/.bashrc не читается.

Я бы добавил дополнения в PATH в ~/.bash_profile и / или, возможно, source ~/.bashrc .

В некоторых оболочках проводится различие между двумя или тремя типами файлов инициализации оболочки:

  1. Файл профиля, который считывается командами входа.
  2. Файл, который читается интерактивными оболочками.
  3. И, возможно, файл, который читают неинтерактивные оболочки, то есть скрипты.

Для bash :

  1. ~/.bash_profile
  2. ~/.bashrc
  3. Каким бы ни был файл $BASH_ENV .

Точка разделения скрипта запуска профиля из скрипта, читаемого интерактивными оболочками, позволяет вам делать (потенциально тяжелые) задачи настройки для всех ваших будущих сеансов оболочки раз и навсегда. Обычно это связано с установкой PATH как минимум, но также и с любыми другими экспортируемыми переменными (т.е. переменными среды).

В сценарии инициализации интерактивной оболочки ( ~/.bashrc в случае bash ) требуется только то, что необходимо для интерактивных оболочек. Это включает в себя установку переменных оболочки, таких как PS1 которые не следует экспортировать, а также определение псевдонимов и функций и т. Д. Вам также следует настроить переменные среды, которые необходимо установить для этого сеанса и любой запущенный процесс с этого сеанса, например GPG_TTY ( GPG_TTY="$(tty)" ), если вы используете GnuPG.

Я предпочитаю source $HOME/.bashrc из моего файла ~/.bash_profile после установки моего PATH и настройки моей umask так, как я их хочу, и пусть ~/.bashrc настраивает переменные файла истории, приглашение PS1 , PAGER и EDITOR и несколько псевдонимов и функций и многое другое. (Это половина ложь, я на самом деле ksh93 оболочку ksh93 из моего профиля, если я могу ее найти, но если я не могу, я продолжу с bash ). Я также обновляю свою оболочку в файле инициализации интерактивной оболочки (с renice -n 4 $$ ), потому что я часто работаю на общей машине с множеством других людей, которым нужен процессор больше, чем я (но это только я).

Оболочка ksh93 использует

  1. ~/.profile
  2. ~.kshrc (или что-то еще $ENV указывает на)

ksh93 является немного более здравым, чем bash поскольку он знает, что существует такая вещь, как интерактивная оболочка для входа, поэтому она читает $ENV (если она установлена) для этих сеансов оболочки, после чтения ~/.profile .

Оболочка pdksh также читает ~/.kshrc для неинтерактивных оболочек, что меня раздражает (и разбивает несколько важных скриптов, которые я использую), поэтому у меня есть

 case $- in *i*) ;; *) return ;; esac 

в верхней части моего файла ~/.kshrc .

  • Многоуровневое меню-подменю-вариант bashscript (If-Else vs Switch-Case)
  • Показать скользящее окно вывода из программы
  • Глобальная переменная для каждого скрипта
  • dirname и basename против расширения параметров
  • Определите максимальную длину столбца для каждого столбца в упрощенном csv-файле (по одной строке в строке)
  • Что делает этот expr в сценарии оболочки?
  • Shell Script считывает метаданные файла, а затем mv каждый в новый каталог
  • Для Loop для Google Image Загрузка скрипта Bash
  • Добавить разделитель тысяч в число
  • Определите размер резервной копии за 7 дней
  • Проблема с переменной чтения от AWK
  • Linux и Unix - лучшая ОС в мире.