cd
в другую папку на каждой вкладке (т.е.: выполните уникальную команду). Я хочу, это написало сценарий так, я могу нажать сценарий на свой Рабочий стол и иметь его, открывают терминалы, как я хотел бы за свою ежедневную среду разработки.
У меня есть этот сценарий, чтобы попытаться открыть 3 терминальных вкладки с уникальными командами, которые будут выполнены на вкладках:
#!/bin/bash
gnome-terminal --tab -- bash -c "source $HOME/.bashrc && set-title hey; exec bash"
gnome-terminal --tab -- bash -c "cd ~; exec bash"
gnome-terminal --tab
Когда я выполняю его с ./open_tabs.sh
, это открывает 3 новых вкладки, но к сожалению set-title
не работает для установки заголовка вкладки! Я получаю эту ошибку на той вкладке, которая открывается:
bash: set-title: command not found
Я имею set-title
определенный как функция в ~/.bashrc
как это. Его цель состоит в том, чтобы установить строку заголовка наверху любого окна терминала. Это работает отлично, когда я использую его вручную. Исключая: set-title hey how are you?
поместит "эй как дела?" наверху моего окна терминала.
# From: https://unix.stackexchange.com/questions/177572/how-to-rename-terminal-tab-title-in-gnome-terminal/566383#566383
set-title() {
# If the length of string stored in variable `PS1_BAK` is zero...
# - See `man test` to know that `-z` means "the length of STRING is zero"
if [[ -z "$PS1_BAK" ]]; then
# Back up your current Bash Prompt String 1 (`PS1`) into a global backup variable `PS1_BAK`
PS1_BAK=$PS1
fi
# Set the title escape sequence string with this format: `\[\e]2;new title\a\]`
# - See: https://wiki.archlinux.org/index.php/Bash/Prompt_customization#Customizing_the_terminal_window_title
TITLE="\[\e]2;$@\a\]"
# Now append the escaped title string to the end of your original `PS1` string (`PS1_BAK`), and set your
# new `PS1` string to this new value
PS1=${PS1_BAK}${TITLE}
}
Как делают я фиксирую это!? Я попробовал export
луг и source
луг и просто не знает то, что я делаю неправильно здесь.
Откройте Terminal с несколькими вкладками и выполните приложение <==, это - то, что я действительно пытаюсь решить, но gnome-terminal
--command
(-e
) опция теперь удерживается от использования!
# Option “--command” is deprecated and might be removed in a later version of gnome-terminal.
# Use “-- ” to terminate the options and put the command line to execute after it.
Заставить удар читать и выполняться ~/.bashrc
на запуске запустите его как интерактивную оболочку:
gnome-terminal --tab -- bash -ic "set-title hey; exec bash"
Теперь, почему не сделал Вашего подхода определения источника файла в неинтерактивной работе оболочки? Я сильно принимаю Ваш ~/.bashrc
начинается с чего-то вроде этого:
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
Это позволяет ему return
ничего не делая, если оболочка, где это получено, не имеет “меня” нигде в $-
, т.е. это - интерактивная оболочка. $-
специальный параметр, man bash
говорит:
-
Расширяется до текущих флагов опции, как указано после вызова,set
встроенная команда или установленные самой оболочкой (такой как-i
опция).