Установка переменной окружения в командной строке и ее влияние на две команды

Когда вы подключаетесь к общедоступному порту _ip :, вы фактически подключаетесь к маршрутизатору, но поскольку (скорее всего )ваш хост находится за NAT, созданным самим маршрутизатором, вам необходимо выполнить переадресацию подключение к внутреннему _ip :порту.

Как правило, это можно сделать на веб-странице маршрутизатора в разделе переадресации портов.

Имейте в виду, что это позволяет любому подключаться из любого места, поэтому убедитесь, что вы используете ключи ssh для входа в систему и предотвратите перебор с помощью таких инструментов, как failtoban или ufw/iptables.

2
21.10.2019, 18:13
3 ответа

Обе команды можно было запускать в одной оболочке:

TEST=`uuidgen` sh -c 'echo "$TEST" && echo "$TEST"'
3
27.01.2020, 22:08

Используйте export TEST=bla, чтобы сделать переменную TESTдля всего сеанса оболочки.

$ export TEST="coincoin"
$ echo $TEST
coincoin
$ cat test.sh 
#!/bin/bash

echo "Test is ${TEST}"
$./test.sh 
Test is coincoin
0
27.01.2020, 22:08

Если вы не хотите делать присвоение переменной временным (, т. е. только для одной команды ), сделайте назначение в отдельной строке.

Несколько примеров различных видов присвоения переменных:

  1. TEST=foo echo "$TEST"
    

    Это временно присвоит значение fooпеременнойTEST(и временно экспортирует ТЕСТ )для ТОЛЬКО этой единственной команды echo. После этого он возвращается к тому значению (и статусу экспорта ), которые были до сброса -, если у него не было значения.

  2. TEST=foo
    echo "$TEST"
    NEWTEST="$TEST"
    

    В этом примере TEST имеет значение fooдо тех пор, пока оболочка не выйдет (, например. выход из системы или конец скрипта ), или он явно не установлен, или назначено новое значение, поэтому NEWTEST заканчивается тем же значением (foo ), что и TEST.

    TEST не экспортируется, поэтому недоступен в среде программ, выполняемых из этой оболочки.

  3. Если вы хотите, чтобы переменная была доступна в среде исполняемых программ, вам необходимо ее экспортировать.

    напр.

    export TEST=foo
    

    или:

    TEST=foo
    export TEST
    
1
27.01.2020, 22:08

Теги

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