Рейтинг:0

Изменить путь, чтобы включить кавычки

флаг cn

Ubuntu устанавливается на ОС Windows. Я искал и нашел, как добавить новый путь, но я не совсем понимаю, как изменить уже существующий путь, а затем добавить кавычки вокруг путей с пробелами. У меня есть следующее в пути:

PATH=/usr/local/cuda-11.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr /local/games:/mnt/c/Program Files/Common Files/Oracle/Java/javapath:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/ mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/Git/cmd:/mnt/c/Python27:/mnt/c/Python27 /Scripts:/mnt/c/Program Files/PuTTY:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/ProgramData/DockerDesktop/версия-bin:/mnt/c/Users/amason1 /AppData/Local/Programs/Microsoft VS Code/bin:/snap/bin

Как изменить путь, чтобы заключить в кавычки Program Files в /mnt/c/Program Files/Git/cmd?

vanadium avatar
флаг cn
Некоторая «гигиена» в вашем PATH может быть оправдана: вы не можете иметь путь для каждого исполняемого файла повсюду в вашей системе. Вместо этого научитесь работать с символическими ссылками или сценариями-оболочками, размещенными в каталоге по вашему существующему пути. Слишком длинный путь сложно поддерживать, и он может в какой-то момент замедлить запуск приложений.
Sunshine avatar
флаг cn
Ванадий спасибо. Я ценю обратную связь.
Рейтинг:1
флаг cn

Чтобы вставить буквальные двойные кавычки в ДОРОЖКА переменная, вы либо заключаете путь в ' или избегайте специальных символов, предшествующих им, с помощью \. Таким образом, любое из следующего будет работать:

PATH=...:'"/mnt/c/Program Files/Git/cmd"':...

или же

PATH=...:\"/mnt/c/Program\ Files/Git/cmd\":...

У вас могут быть свои веские причины для этого. Просто знайте, что папка «/mnt/c/Program Files/Git/cmd» отличается от папки /mnt/c/Program Files/Git/cmd. Первый путь не является абсолютным, поэтому он будет найден только в том случае, если он существует в текущем каталоге.

Sunshine avatar
флаг cn
Спасибо. Это сработало. Теперь мне нужно выяснить, почему сценарий по-прежнему приводит к ошибке после добавления кавычек для учета пробелов в каталогах.
Рейтинг:1
флаг uz
Jos

Это должно работать:

PATH=/usr/local/cuda-11.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr /local/games:"/mnt/c/Program Files/Common Files/Oracle/Java/javapath":/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem :/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:"/mnt/c/Program Files/Git/cmd":/mnt/c/Python27:/mnt /c/Python27/Scripts:"/mnt/c/Program Files/PuTTY":"/mnt/c/Program Files/Docker/Docker/resources/bin":/mnt/c/ProgramData/DockerDesktop/версия-bin: "/mnt/c/Users/amason1/AppData/Local/Programs/Microsoft VS Code/bin":/snap/bin

По сути, вы ставите двойные кавычки (") вокруг имен каталогов, содержащих пробелы, например:

/mnt/c/Program Files/Common Files/Oracle/Java/javapath

поэтому они становятся

"/mnt/c/Program Files/Common Files/Oracle/Java/javapath" 

В качестве альтернативы выйдите из пространств с помощью \ характер, как в:

/mnt/c/Program\ Files/Common\ Files/Oracle/Java/javapath 

Пожалуйста, дважды проверьте приведенную выше команду перед ее вводом, иначе вы можете столкнуться с проблемами.

Sunshine avatar
флаг cn
Спасибо за ответ.Я пропустил шаг? Я попробовал команду после двойной проверки, но у меня все еще та же проблема. Ни один из путей с пробелами не заключен в кавычки, если я выполняю printenv после выполнения команды. Я также пытался экранировать пробелы с помощью символа \. Ни обновленный путь. Я также открыл новое окно терминала после этих изменений. Пока не нашел как применить изменения и они остаются в системе.
vanadium avatar
флаг cn
Это нормально, что кавычки или escape-символы не видны в самой переменной PATH. Теперь я понимаю, что мы все неправильно понимаем ваш вопрос. Используйте escape-символ или одинарные кавычки, чтобы вставить кавычки в саму переменную, но убедитесь, что вы знаете, зачем вам это нужно.
Sunshine avatar
флаг cn
Я не уверен, что я делаю неправильно. Я уже несколько раз пробовал использовать одинарные и двойные кавычки вместе с escape-символом. Я работаю с некоторыми сценариями в Ubuntu из инструмента Kaldi, которые используют PATH, и из-за пробелов в PATH я получаю ошибки.
Sunshine avatar
флаг cn
Мне не хватало одинарных кавычек. Спасибо. Это действительно обновило путь. К сожалению, я все еще получаю ошибки.
Sunshine avatar
флаг cn
Я работаю со сценариями Kaldi в Ubuntu в WSL. Кто-нибудь может поделиться, почему после того, как я перезагрузил свою машину или открыл новый терминал Ubuntu, PATH, которые я обновил для учета интервалов в каталогах, теперь вернулись к отсутствию двойных кавычек? Я пытался использовать \, чтобы избежать пробела. Я все еще получаю ту же ошибку, как если бы интервалы все еще были включены в пути в этом терминале. Я добавил операторы эха, чтобы показать, что PATH имеют двойные кавычки для интервала, но возникает та же ошибка, как если бы интервал все еще был в текущем терминале, где были сделаны обновления.
Sunshine avatar
флаг cn
Есть ли способ сделать обновления постоянными или это не одобряется?
флаг uz
Jos
Я бы удалил свой ответ, если бы не последующие ценные комментарии.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.