Посмотрите здесь для хорошего ответа:
лучший способ разрешить имя пользователя дисплея SID?
суть его является этим битом:
string sid="S-1-5-21-789336058-507921405-854245398-9938";
string account = new System.Security.Principal.SecurityIdentifier(sid).Translate(typeof(System.Security.Principal.NTAccount)).ToString();
Этот подход работает на меня для нелокального SID по активному каталогу.
Запустите ваш сценарий с .
. myscript.sh
Это запустит сценарий в текущей среде оболочки.
export
определяет, какие переменные будут доступны для новых процессов, поэтому если вы скажете
FOO=1
export BAR=2
./runScript.sh
, то $ BAR
будет доступен в среде runScript.sh
, но $ FOO
не будет.
Когда вы запускаете сценарий оболочки, это делается во вспомогательной оболочке, поэтому он не может повлиять на среду родительской оболочки. Вы хотите создать сценарий, выполнив:
. ./setfoo.sh
Это выполняет его в контексте текущей оболочки, а не как sub оболочку.
На странице руководства bash:
. имя_файла [аргументы]
исходное имя файла [аргументы]Чтение и выполнение команд из имени файла в текущей оболочке среда и вернуть статус выхода последней выполненной команды от имени файла.
Если имя файла не содержит косой черты, имена файлов в PATH используются для найдите каталог, содержащий имя файла.
Файл, который искали в PATH, не обязательно должен быть исполняемым. Когда bash нет в режиме POSIX выполняется поиск текущего каталога, если файл не найден в PATH.
Если параметр sourcepath для встроенной команды shopt отключен, ПУТЬ не ищется.
Если предоставлены какие-либо аргументы, они становятся позиционными параметрами при выполнении имени файла.
В противном случае позиционные параметры не изменяются. Статус возврата это статус последней команды, выполненной в сценарии (0, если нет команды выполняются) и false, если имя файла не найдено или не может быть прочитанным.
#!/bin/bash
export FOO=bar
или
#!/bin/bash
FOO=bar
export FOO
man export:
Оболочка должна присвоить атрибут экспорта переменным, соответствующим указанным именам, что приведет к их размещению в окружение последовательно выполняемых команд. Если за именем переменной следует = word, тогда значение этой переменной должно быть установлено в word.