Функции оболочки легко модифицируются и поддерживаются. Вы должны добавить их в свой PATH, когда вы знаете, что они вам всегда будут нужны (даже если это будет гораздо реже), а не временным явлением. Нет необходимости загружать такой большой rc-файл, к которому вы добавляете файлы, когда вы знаете, что вам все это не понадобится все время. Если есть большая функция, которой вы пользуетесь реже, но она очень важна, сделайте ее доступной для себя, PATH
чтобы вы могли обращаться к ней только тогда, когда вам это нужно.
Функция оболочки лучше, чем та же функция в PATH?
Я был немного смущен по поводу постороннего использования функций оболочки.
Мое определение функции оболочки : функция в .bashrc такая, что
.bashrc
--- other default bash configs ---- extract() { // I call this a shell function .... }
Мое определение функции помещено в PATH : файл, папка которого находится в PATH. Например, у нас есть файл ~ / bin / screen / convert.screen
Чтобы добавить файл и другие файлы в папке в мой путь, у меня может быть следующий путь
export PATH='/Users/masi/bin/screen:'
Я хотел бы знать, когда я должен поместить функцию в качестве функции оболочки для входа, а когда в мою переменную PATH. Я предпочитаю последнее на данный момент, так как первое увеличивает затраты на техническое обслуживание.
В чем преимущество пользовательской функции оболочки, которой нет в вашей переменной PATH?
3 ответа на вопрос
Было бы полезно, если бы вы согласились с более приемлемым описанием функции оболочки как функции, записанной в файле (скрипте), который можно получить для загрузки в вашу оболочку и использовать в других скриптах и командах оболочки .
Если мы примем эту интерпретацию термина, то функции оболочки облегчат вашу жизнь с помощью «функций» в ваших скриптах и командах.
Если вы пойдете дальше, вы также можете записать свои менее часто используемые «функции» в отдельный файл и сохранить их вместе с другими вашими скриптами. Когда вам нужны эти можно просто источник этого сценария в вашей оболочке.
Я использую функции оболочки для вещей, которые достаточно малы и самодостаточны, и которые являются вспомогательными командами для оболочки, а не полными программами сами по себе. Когда что-то становится подходящей программой, я записываю ее как таковую и перемещаю в папку bin в моей $HOME
папке (которая уже находится в моей PATH
).
Вот пример:
# Start mpd (if necessary), search for music using mpc, play music. mp-start() { ps -C mpd > /dev/null || mpd mpc search any $1 | mpc add - mpc play }
Это функция, а не программа. Это очень мало, и я собираюсь использовать его, только если я уже работаю в оболочке.
Я также считаю более чистым помещать все функции для моей оболочки в отдельный файл ( для меня .bash_functions, но я думаю, что вы - пользователь Z-оболочки, поэтому настройте его соответствующим образом), который я получаю из основного файла моей оболочки. Последний совет - добавить что-то вроде этого в ваши псевдонимы:
alias refunction='vim ~/.bash_functions; source ~/.bash_functions'
Это позволяет вам создавать новую функцию на лету и иметь ее сразу же после завершения редактирования.
Похожие вопросы
-
3
Mac OS X: обычные места, где должны жить бинарные файлы
-
2
Почему мой путь не обновляется * сейчас *?
-
4
Какой самый длинный путь к файлу, который может обработать Windows?
-
-
12
Переменная PATH env в Mac OS X и / или Eclipse
-
1
Microsoft Word меняет местоположение при запуске
-
2
Как создать ярлык терминала для открытия определенной папки?
-
10
$ PATH в Vim не соответствует терминалу
-
5
Когда я запускаю приложение из cmd-строки, как мне найти путь к exe?
-
5
Как изменить символическую ссылку в OS X?
-
3
Как расширить максимальный размер пути к файлу в Windows 7?