Каков хороший способ изменить сценарий A, содержащий
"typeset -r VAR=value"
, чтобы сделать сценарий повторяемым (при сохранении оператора)?
В настоящее время рассматриваемый сценарий вводится пользователем .profile во время входа в систему, а затем снова включается другими сценариями, запускаемыми пользователем из командной строки.
Как есть,сценарий выдаст ошибку при последующих запусках, поскольку VAR уже будет доступен только для чтения.
uname -a: Linux demon 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
Обновление проблемы:
Если вы закомментируете расстановку точек в сценарии Aпо сценарию .profile
пользователя, то при входе в систему сценарий B, точки которого в сценарии A, можно запускать снова и снова без проблем.Однако если вы затем запустите сценарий A из командной строки, последующие вызовы сценария B завершатся с ошибкой.
Чем объясняется такое поведение?
- Кажется, потому что
.profile
работает в самой большой оболочке в системе, а скрипт B запускается во временной подоболочке.
Как это исправить?
- Как можно обновить скрипт B так, чтобы он проверял только для чтения и значение VAR, прежде чем пытаться установить значение VAR и сделать чтение VARтолько?