ssh example.com somecommand
не читает Ваш ~/.profile
; somecommand
выполняется непосредственно ssh демоном. Когда Вы не указываете команду, ssh демон вызывает Вашу оболочку входа в систему, которая читает Ваш ~/.profile
. (Замена ~/.bash_profile
, ~/.zprofile
или ~/.login
в зависимости от Вашей оболочки входа в систему.)
Существует несколько способов установить переменные среды для неинтерактивной команды, но они все требуют установки в конфигурации сервера, которая обычно является прочь по умолчанию. Принятие достаточно недавнего OpenSSH с обеих сторон:
Можно было отправить переменные среды от клиента к серверу с SendEnv
директива в ~/.ssh/config
. Определенная переменная среды должна быть включена с AcceptEnv
директива в конфигурации сервера.
Можно установить переменные среды через ~/.ssh/environment
на стороне сервера. Это должно быть включено в конфигурации сервера с PermitUserEnvironment
директива.
Принятие Вас использует основанную на ключе аутентификацию, можно также установить переменные на источник в ~/.ssh/authorized_keys
: добавить environment="FOO=bar"
в начале соответствующей строки. Снова, Вам нужно PermitUserEnvironment
директива в конфигурации сервера.
Если Вы не можете или не хотеть изменять конфигурацию сервера, необходимо будет записать полный путь в удаленную команду или явно получить Ваш .profile
в удаленной команде.
ssh user@10.0.0.5 -Y '. ~/.profile; netbeans'
ssh user@10.0.0.5 -Y '/path/to/netbeans'
Вы удачливы, экран действительно соблюдает, сохраняют и команды resore. Таким образом с ударом это может быть сделано.
Это дает инструкции, как переместить курсор со специальными escape-последовательностями. Можно записать "Привет Мир!" к верхнему левому углу с этим:
echo -e "\033[s\033[2;0HHello World! \n \033[u"
Объясненный: символ \033[s
сохраняет текущую позицию курсора, которая является тем, что мы хотим терминальные размеры экрана b/c, может варьироваться, много. Затем \033[2;0
перемещает курсор в третью строку к первому символу (мы начинаем рассчитывать в верхнем левом углу и с 0). Затем прибывает текст и немного иллюстрации того, что возможно. Наконец код \033[u
откладывает курсор туда, где это был wenn \033[s
испускался.
Этот пример перемещает курсор во вторую строку, потому что при издании новых строк команды 2 печатаются поэтому, что является текущей третьей строкой, будет первая строка.
Можно использовать это вместе с подписью сессии, которую можно уже получить объяснением, которое Вы уже связали.
tput
сделать это независимым от терминала способом, не нуждаясь к hardcode в тех управляющих кодах. Например:echo -n "$(tput sc)$(tput cup 0 0)----Hello, world----$(tput rc)"
– Jim Paris 09.08.2012, 19:16screen $SHELL -c 'echo -n "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'
иscreen $SHELL -c 'screen -X caption always "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'
но ни один не работал. Какие-либо идеи? – l0b0 21.08.2012, 15:42screen -X caption always; screen -X caption string "%t"
. Если бы Вы хотите текущий заголовок в левом верхнем углу, необходимо было бы изменить ВашPS1
переменная среды к invludetput
волшебство. – Bananguin 22.08.2012, 10:10