Подтвердить что ты не робот

Выполнение оболочки script без вызова sh неявно

Мне было интересно, можно ли сделать "ссылку" в usr/bin (т.е.), что приводит к оболочке script.

Но я хочу просто написать

% shellscript

вместо

% sh shellscript.sh

вроде как псевдоним.

Возможно ли это?

4b9b3361

Ответ 1

Сделайте первую строку script

#!/bin/sh

Затем сделайте его выполнимым, набрав команду:

chmod +x shellscript.sh

Если вы теперь разместите script в папке bin, которая находится в переменной PATH вашей системы, и вы сможете запустить ее напрямую. Чтобы увидеть папки на вашем пути, введите:

echo $PATH

Я обычно использую /home/[my username]/bin для сценариев, которые я написал, чтобы они не мешали другим пользователям в системе. Если я хочу, чтобы они были для всех пользователей, я использую /usr/local/bin, который в большинстве дистрибутивов пуст.

.sh в конце имени файла script - это только соглашение, которое поможет вам запомнить, какой файл он есть. Он по-прежнему будет работать, если вы переименуете его только на shellscript, например, который выполнит ваши требования.

Ответ 2

Вы можете сделать исполняемый файл оболочки script (chmod +x shellscript.sh). Затем вы можете связать его с /usr/bin (ln -s shellscript.sh /usr/bin/shellscript).

Ответ 3

Да. Вы можете использовать ln для создания ссылки на shellscript.sh с именем shellscript. Затем вам нужно будет сделать его исполняемым, но после этого (если /usr/bin находится на вашем пути), вы можете запустить его с помощью shellscript.

Ответ 4

В дополнение к выполнению исполняемого файла script и его привязке в /usr/bin, как и другие, вы также захотите добавить строку "shebang" в начало script:

#!/bin/sh

# your commands here

Это позволяет указать, какой интерпретатор оболочки (bash, bourne shell, c-shell, perl, python...) следует использовать для выполнения script.

Ответ 5

Я размышлял над этим вопросом об использовании расширений имен файлов в Unix/MacOSX, и лучший ответ, который я могу предоставить, - это вставка из моих комментариев к разработке в некотором коде, который я написал несколько лет назад, чтобы автоматизировать весь утомительный процесс обновления скриптов, которые я пишу для включения в/USR/локальные/бен.

I have begun to
change how I develop code for my contributions to
/ usr / local / bin. In the past I would always leave the development
file without an extension and depend on the shebang
#!/usr/bin/env ...) line. The flaw with using this approach
exclusively is it does not allow me to utilize the code colorizing
capabilities I have available for programming languages as deftly
as I might. Also allot of development environments do not
understand shebang and so see the code as plain text. Nor are the
contents of files without file extensions accessible via the MacOSX
QuickLook feature...

Короче говоря, мой код автоматизации (скорее, для публикации здесь) 'sudo' вставляет исполняемую копию без расширения программы в /usr/local/bin, но файл в каталоге разработки хранит ее script/расширение языка программы на месте. Обе копии имеют одну и ту же строку shebang в верхней части файла. Разумеется, множество других повторяющихся задач также автоматизированы в этом коде автоматизации. Но конечная награда - это "накладные расходы", связанные с процессом написания новых "команд" или настройки существующих команд /usr/local/bin ", теперь принимает пару нажатий клавиш.

Я остаюсь на Snow Leopard и с осторожностью отношусь к Лев. Так что, если на Лионе все по-другому, я извиняюсь за любую путаницу. Кроме того, если ваша ОС не имеет эквивалента QuickLook, некоторые из сказанных вами могут быть потеряны для вас, но я думаю, что любой пользователь Linux/Unix по-прежнему может извлечь выгоду из раскрашивания кода через vim/less (http://www- zeuthen.desy.de/~friebel/unix/less/README).

Пример некоторых из моего автоматизированного вывода кода раскраски кода, который облегчает выполнение QuickLooking через код в каталоге разработки:

/usr/bin/highlight --syntax sh --style neon -i "/Users/pcs/Projects  /Shell/Bash/findpdftext/findpdftext.sh" >| "/Users/pcs/Projects/Shell /Bash/findpdftext/findpdftext.sh.html" 

Создание этого шаблона html ничего мне не стоит и красивее в QuickLook, чем созданные man-страницы. Еще один небольшой пример gob автоматизированного вывода, который входит в script в каталог разработки программы, который будет запущен, когда я буду готов вносить какие-либо изменения в script в запрос 'copy' в /usr/local/bin:

##################################### REWIRE findpdftext.sh: 
chmod 777 "/Users/pcs/Projects/Shell/Bash/findpdftext/findpdftext.sh" 
cp -f "findpdftext.sh" "findpdftext" 
sudo ln -f "findpdftext" /usr/local/bin 
cp -f "findpdftext" "/Users/pcs/man/cat1/findpdftext.1" 

############### SYMBOLIC-LINK-NAMES supplied from command-line: 
##### fpdf is a symbolic link to findpdftext 
sudo ln -s -f "/usr/local/bin/findpdftext" "/usr/local/bin/fpdf" 
cp -f "/usr/local/bin/findpdftext" "/Users/pcs/man/cat1/fpdf.1" 

############### SYMBOLIC-LINK-NAMES supplied from command-line: 
##### fpt is a symbolic link to findpdftext 
sudo ln -s -f "/usr/local/bin/findpdftext" "/usr/local/bin/fpt" 
cp -f "/usr/local/bin/findpdftext" "/Users/pcs/man/cat1/fpt.1" 

В заключение, для меня есть причины использовать стили именования файлов.