Лучший способ организовать свою sh / bash / python / etc. скрипты

2453
badp

Каков наилучший способ организации сценариев sh / bash / python, которые вы собираете и пишете в своей системе?

11

12 ответов на вопрос

7
ext

У меня есть все такие скрипты в ~ / bin, который также является SVN, работающим для всех скриптов, которые я часто использую на нескольких компьютерах. Он также содержит части моей конфигурации zsh, такие как псевдонимы и переменные среды.

3

Зависит от цели сценария. Я обычно разбиваю свое между двумя местами. Либо ~ / инструменты для серьезных вещей, которые я регулярно использую, либо ~ / площадка / [название функции, с которой я играю].

3
dsm

У меня есть каталог ~ code, с подкаталогом для каждого языка, который я использую, и в моем .bashrc у меня есть инструкция для ввода каждого из них в мой $ PATH. Например:

dsm@localhost:~ $ cat .bashrc ... export PATH="$( find /home/dsm/code -mindepth 1 -maxdepth 1 -type d -print\ | perl -ne 'chomp; print"$:";' )$" ; ... dsm@localhost:~ $ 
Я использую lang как второй (но обязательный) путь. IE: `/ home / $ user / code / $ appname / $ lang /`. Некоторые из моих проектов используют несколько частей, потому что я вынужден разбивать их по папкам. Для мусора кода я просто помещаю его в / home / $ user / test / $ что-то. erm3nda 9 лет назад 0
2
Matt

Так же, как и все остальные, я использую ~/binбольшинство сценариев и оставляю специфичные для проекта вещи ~/projects/whatever.

2

Что я делаю, так это:

Иметь / home / myname / Scripts /

Я положил туда все свои скрипты (классифицирует в каталогах в зависимости от их функции / проекта). Теперь самое приятное, что весь / home / myname / Scripts / контролируется версией (с SVN). Таким образом, я могу изменить и все еще могу посмотреть на свои изменения.

чтобы все приложения распознали это, вы можете попробовать добавить путь к / etc / profile (для bash).

в / etc / profile, последняя строка, добавить

export PATH=$:/home/myname/Scripts/ 
2
Phoshi

Я храню все свои разработки в папке user \ dev, которая связана с моей папкой dropbox, чтобы сохранить все резервные копии. (хорошо, я соврал, большинство графических вещей предназначено dev\..\graphicsдля уменьшения использования Dropbox для вещей, которые не нужно резервировать так часто)

Скрипты остаются в dev, и если я буду использовать их часто, я им что-то псевдоним, а не все на моем пути. («псевдоним» здесь относится к doskey, который я автоматизировал с помощью скрипта python, который я связал с псевдонимом)

1
badp

В настоящее время я храню все в папке в моем домашнем каталоге, ~ / sh. Я добавил его в PATH в .bashrc (и .zshrc, так как я использую оба.)

Недостатком является то, что приложения, которые не запускаются терминалом, например, X-сервером, не получают измененное значение PATH. Затем я вынужден добавить 'sh /' к имени файла при запуске этих скриптов из графического интерфейса.

1
perimosocordiae

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

С другой стороны, для глобальных сценариев каталог ~ / sh звучит как победитель.

1

Под окнами вы можете установить общесистемные переменные среды либо для всех пользователей, либо для конкретного пользователя.

Это означает, что всякий раз, когда программа запускается, она знает заданные вами переменные среды. Конечно, вы также можете установить переменные среды из другого процесса, такого как CMD, и в этом случае только программы, которые запускаются из этого процесса, будут знать эти переменные.

Я не знаю способа под Linux установить общесистемные переменные среды для конкретных пользователей, но есть способ установить общесистемные переменные среды для всех пользователей.

Вы можете написать желаемое значение в этом файле: / etc / environment

Значения, установленные в этом файле, будут распознаваться всеми программами для всех пользователей.

Вы можете сделать 'man pam_env', чтобы получить больше информации о демоне, который фактически обрабатывает этот файл.

Надеюсь, поможет,

Джонатан Орлев

Проблема в том, что это общесистемное изменение. Только я и root имеем доступ к ~ / sh; Я бы предпочел не связываться с PATH root, поскольку это может нарушить системные скрипты. badp 16 лет назад 0
Я считаю, что «общесистемные переменные среды для конкретных пользователей» - это оксюморон. Есть только системные * или * пользовательские переменные. jiggunjer 8 лет назад 0
1
antik

Я храню все свои часто используемые скрипты в ~ / scripts и настроил свой / etc / profile для включения этой папки в мой путь для всех пользователей.

if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$" else PATH="/usr/local/bin:/usr/bin:/bin:$" fi  PATH="$:~/scripts" 

Похожие вопросы