Linux -Проверить, является ли переменная переменной оболочки или переменной пользователя?

Проблема заключается в кавычках вокруг имени файла. Они не позволяют вашей оболочке расширить ~до вашей домашней папки. Итак, sedищет папку с именем ~.

Убедитесь, что $filenameне содержит кавычек, или используйте реальный путь вместо ~.

0
20.03.2021, 11:18
1 ответ

Вы обнаружили причину, по которой по традиции переменные, используемые оболочкой или установленные как часть конфигурации инструмента, называются в верхнем регистре (PATH, DISPLAY, LESS,... ), со всеми именами в нижнем регистре, доступными для пользователя.

Переменные среды (, за исключением специальных переменных оболочки (IFS, PS1, OLDPWD, PWD,... )), все хранятся в одной структуре данных в вашей оболочке. Переменные среды представляют собой такой динамический набор данных, что сохранение истории было бы слишком накладным.

Вы можете наблюдать за созданием среды, следя за выполнением «файлов запуска» вашей оболочки вручную или вставляя отладочный код в сценарии.

Если у вас есть sudoeditдоступ к сценариям (или вы просто владеете ), вы можете сделать их управляемо подробными, вставив что-то вроде:

[[ -f /tmp/debug ]] && source /tmp/debug

в сценарии. Затем в /tmp/debugможно set +x, env | sort >/tmp/debug.outи т. д.

Если вы хотите остановить поток отладки, просто rm /tmp/debug.

Прочитайте страницу manдля вашего $SHELL.

0
28.04.2021, 22:58

Теги

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