3

Я добавил несколько строк в мой ~/.bashrc как

export JAVA_HOME=/opt/jdk1.6.0_22

Я получил это:

$ source ~/.bashrc
$ env | grep 'JAVA'
JAVA_HOME=/opt/jdk1.6.0_22

Затем я создал базовый скрипт bash в папке, называемой scripts в моем доме:

#!/bin/bash

echo 'start'
echo $(env | grep HOME)
echo $(env | grep LOGNAME)
echo $(env | grep JAVA)
echo 'exiting'

sleep 5
exit

Теперь, если я запускаю его напрямую, я получаю ожидаемый результат

$ cd ~/scripts
$ bash 'myScript.sh'
start
HOME=/home/foo/.config
LOGNAME=foo
JAVA_HOME=/opt/jdk1.6.0_22
exiting

Однако мне нужно вызвать его по-другому, используя следующую команду, и, к сожалению, он не работает так же:

$ lxterminal --command "bash /home/foo/scripts/myScript.sh"
start
HOME=/home/foo XDG_CONFIG_HOME=/home/foo/.config
LOGNAME=foo

exiting

Похоже, что .bashrc не получены таким образом. Я тоже пробовал с .profile, но с тем же результатом. Есть ли другой файл, полученный lxterminal при вызове с помощью вышеуказанной команды?

Причина, по которой мне нужна эта команда, заключается в том, что я хочу запускать свои собственные сценарии через ссылки / средства запуска, которые я добавил в меню «Пуск», и они должны выполняться в окне lxterminal.

1 ответ1

4

Попробуйте заставить bash использовать интерактивный режим:

lxterminal --command "bash -i /home/foo/scripts/myScript.sh"

Это происходит потому, что:

  • ~/.bashrc читается в интерактивном режиме;

  • ~/.bash_profile , ~/.bash_login и ~/.profile читаются в режиме входа в систему.

Смотри Invocation в man bash.

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