Оболочка действительно ли пользователя по умолчанию отличается, чем другие? (также в /etc/passwd
) Это могло быть потенциальной причиной.
Вы получаете подсказку "удара", когда запуск избивает Ваш терминал, не настраивая пользовательскую подсказку. Так как это просто происходит с одним пользователем, у них могла бы быть другая оболочка входа в систему, чем другие, или они могут запускаться, избивают сценарий входа в систему или на терминале.
Если оболочка по умолчанию прекрасна (соответствие другим пользователям) затем пытаются определить если .bashrc
или .bash_profile
отличается, чем, что находится в домашней папке других пользователей? (Мог также быть ~/.profile
, ~/.zprofile
или ~/.login
в зависимости от того, что Вы используете...),
Уникальной особенностью в [117210]zsh[117211], например, является наличие переменной [117212]$ZSH_VERSION[117213]:
В этом простом случае скрипт сначала выполняется с помощью [117214]/bin/sh[117215] (все Unix-подобные системы пост80-х годов понимают [117216]#! [117217] и имеют [117218]/bin/sh[117219] , либо Bourne, либо POSIX, но наш синтаксис совместим с обоими). Если [117220]$ZSH_VERSION[117221] установлен [117222], а не [117223], то скрипт [117224]exec[117225] сам по себе через [117226]zsh[117227]. Если установлено [117228]$ZSH_VERSION[117229] (или скрипт уже запущен через [117230]zsh[117231]), то тест просто пропускается. Voilà.
Это не работает, только если [117232]zsh[117233] вообще не находится в [117234]$PATH[117235].
Это может спасти вас от случайного [117242]exec[117243] использования чего-то в вашем [117244]$PATH[117245], что не является [117246]zsh[117247], которого вы ожидаете.[116748].
INSERT INTO MyTable (ISAM_ID, ENTITY, CUSTOMER_MEDIA,STATUS,IIN,OID,FVC)
VALUES ( 10001, 'ErferrRR01','MP3','LOADED'
,'RRGEE', '232133122dfcsdds212121','TGEE');
Bash/Zsh/etc.
Вышеизложенное можно легко адаптировать для различных интерпретаторов. Ключевым моментом является то, что этот скрипт изначально работает как Bourne shell. Затем он рекурсивно вызывает себя второй раз, но разбирает всё, что находится над комментарием [117288]### BEGIN[117289], используя [117290]sed[117291].Perl
Вот похожий трюк для Perl:
Этот метод использует способность Perl, когда даётся запускаемый файл будет разбирать указанный файл, пропуская все строки, которые находятся перед строкой [117292]#! perl[117293].[116792].
на достижение аналогичных целей с помощью аналогичных средств. В то время я не удосужился указать на то, что какие бы недостатки безопасности или иные [117430] в целом непроверенные методы [117431], которые могут быть или не быть представлены в моем ответе, они, скорее всего, коренятся в самом вопросе, чем в моем ответе на него:
Как я могу настроить шум так, чтобы запуск сценария в качестве /path/to/script.sh всегда использует Zsh, доступный в PATH?
Не удовлетворен, @jw013 продолжил возражать, выдвинув свой аргумент [117434]пока еще неподдерживаемый[117435], по крайней мере, с парой ошибочных утверждений:
В первую очередь:[12123]ТОЛЬКО [117438]ИСПОЛНИТЕЛЬНЫЙ [117439] КОД В ЛЮБОМ [117440]ИСПОЛНИТЕЛЬНОМ [117441] КРИСТЕ - это [117442]#![117443] ИТСЭЛЬФ[12124] (хотя даже [117688]#! [117689] является [117690] официально неуказанным[117691])[12125] Сценарий оболочки - это просто текстовый файл - для того, чтобы он имел какое-либо действие, он должен быть [117446] прочитан[117447] другим исполняемым файлом, его инструкции затем [117448] интерпретированы[117449] этим другим исполняемым файлом, прежде чем, наконец, другой исполняемый файл, затем [117450] выполнит свою интерпретацию [117451] сценария оболочки. Невозможно [12126][12127], чтобы файл сценария оболочки [12128] включал менее двух файлов.[12129] В собственном компиляторе [117456]zsh[117457] есть возможное исключение, но с этим у меня мало опыта и он ни в коем случае не представлен здесь.[12130] Хэшбэнг сценария оболочки [117458] должен указывать на интерпретатор [117460] или отбрасываться как несущественный. [12131]Хэшбэнг скрипта SHELL [117462]TOKEN RECOGNITION/EXECUTION[117463] BEHAVIOR IS STANDARDS-DEFINED[12132]Оболочка имеет два основных режима парсинга и интерпретации своего входа: либо текущий ввод определяет [117464]<Некоторые комментарии:
Он должен быть запущен один раз кем-то, кто имеет право создавать и удалять файлы в каталоге, в котором находится сценарий.
Он использует только старый синтаксис оболочки bourne, так как, несмотря на распространенное мнение, [117829]/bin/sh[117830] не гарантированно является POSIX оболочкой, даже в POSIX-совместимых операционных системах.
Он устанавливает PATH на POSIX-совместимый, за которым следует список возможных zsh местоположений, чтобы избежать выбора "фальшивого" zsh.
Если по какой-то причине самоизменяющийся скрипт не будет корректен, было бы тривиально распространять два скрипта вместо одного: первый - тот, который вы хотите исправить, и второй - тот, который я предложил слегка изменить, чтобы обработать первый.