Всё работает, но два вопроса остались:
1. Почему это работает? Что значит
. ./myscript
и чем это отличается от
./myscript
?
— ага, примерно понятно.
2. Теперь берем такой myscript:
#!/bin/bash
ps
export foo=bar
echo $foo
Запускаем его в tty1:
al@eee70:~$ . ./myscript
PID TTY TIME CMD
4142 tty1 00:00:00 bash
6180 tty1 00:00:00 ps
bar
al@eee70:~$ echo $foo
bar
al@eee70:~$
Проверяем в tty2:
al@eee70:~$ ps -e |grep bash
4142 tty1 00:00:00 bash
4665 tty2 00:00:00 bash
al@eee70:~$ echo $foo
al@eee70:~$
То есть env устанавливается всё равно не глобально, а только для того процесса, который запускал скрипт.
Да, и ещё: export не обязательно делать.
. ./ работает и без export.
— ну да, так и должно быть.
В общем, сначала я всё это написал, а потом почитал man bash, в районе строки 3700 — там довольно ясно изложено. Вывод: export в данном случае не нужен. Попробуем понять, для чего он реально нужен...
Поправочка:
В man bash в 10.04 этого нет, кажись.
Я читал man bash в 9.04. Вот там в районе строки 3700 есть...