Команда выполнения в новом терминале гнома и .bashrc

Я пытаюсь запустить одну команду в новом gnome-terminal окно из сценария оболочки, и кажется что мой .bashrc файл не становится полученным при вызове терминала гнома и выполнении команды:

gnome-terminal -t "my title" -e vim

Но это делает при запуске gnome-terminal один:

gnome-terminal -t "my title"

(для тестирования просто добавьте a echo "something" в конец .bashrc)

Я также пытался явно получить .bashrc перед выполнением vim без успеха:

gnome-terminal -t "my title" -x $SHELL -c "source $HOME/.bashrc; vim"

Я пропускаю что-то?

2
задан 21 November 2012 в 15:41

2 ответа

Нет, вы правы. gnome-терминал не создает .bashrc при запуске команды через аргумент -e.

Bash и gnome-терминал - это две разные вещи. Когда вы запускаете без -e, gnome-терминал запускает оболочку по умолчанию (которая, как оказалось, bash). Когда вы запускаете с -e, gnome-терминал запускает указанную вами команду (bash не загружен, поэтому .bashrc не получен).

Ваш последний пример тоже не сработает. $ HOME является переменной в bash и недоступна. Кроме того, source - это команда bash, и vim, вероятно, нужен путь.

На мой взгляд, лучший способ сделать это - создать скрипт-обертку.

На вашем пути где-то (я добавил ~ / .bin / к своему пути) создайте файл с именем vim-x и установите его исполняемым.

#! / bin / bash
source $ HOME / .bashrc
vim "$ @"

Затем вы можете запустить:

gnome-terminal -t "my title" -e /home/user/.bin/vim-x

0
ответ дан 21 November 2012 в 15:41

Я нашел проблему с помощью этого ответа .

На самом деле .bashrc был получен, но не полностью обработан из-за следующих строк:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

Чтобы обойти проблему, самым чистым подходом было бы заставить экземпляр оболочки работать в интерактивном режиме. режим (как видно здесь ):

gnome-terminal -t "my title" -x $SHELL -ic "vim"
0
ответ дан 21 November 2012 в 15:41

Другие вопросы по тегам:

Похожие вопросы: