1

Я недавно установил новейший Qt SDK, и я добавил его в свой PATH внутри моего ~/.bash_profile.

Я не вижу изменений. Я могу получить source ~/.bash_profile но тогда мой путь будет вдвое длиннее, но я не могу просто открыть новый gnome-терминал и обновить путь.

Зачем?

Примечания: Fedora 11 под управлением GNU bash, версия 4.0.16(1), выпущена на рабочем столе gnome по умолчанию.

Конфигурация пути .bash_profile:

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/opt/qtsdk-2009.03/qt/bin/:/usr/local/lib/

2 ответа2

8

Когда вы просто открываете терминал со своего рабочего стола, он наследует среду, в которой он был запущен, включая эту переменную PATH. Когда вы открываете терминал, в документации Bash происходит следующее:

Из справочного руководства Bash

Когда Bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла /etc /profile, если этот файл существует. После прочтения этого файла он ищет ~ /.bash_profile, ~ /.bash_login и ~ /.profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения. Опция --noprofile может использоваться, когда оболочка запущена, чтобы запретить это поведение.

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

А также...

Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, Bash читает и выполняет команды из ~/.bashrc, если этот файл существует. Это может быть запрещено с помощью параметра --norc. Опция --rcfile file заставит Bash читать и выполнять команды из файла вместо ~/.bashrc.

Так что, как правило, ваш ~/.bash_profile содержит строку

 if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

после (или до) любых инициализаций, специфичных для входа в систему.

Таким образом, чтобы запустить ваш .bash_profile, вам необходимо войти в оболочку входа в систему, возможно, выполнив ssh-в localhost или выйдя из среды рабочего стола и снова войдя в систему ..

1

Попробуйте вместо этого поместить это в ваш ~/.bashrc .

Когда вы входите , обрабатывается ~/.bash_profile . Он не обрабатывается снова, когда вы открываете новый терминал или запускаете новую оболочку, то есть, когда обрабатывается ~/.bashrc . Вы должны ~/.bashrc в вашем ~/.bash_profile .

Смотрите раздел "Invocation" в man bash .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .