Не sudo альтернатива / usr / local / bin для обычных скриптов


16

Я привык вставлять общие сценарии, /usr/local/binчтобы я мог выполнять их из любого места с помощью терминала.

Например, я делаю сценарий оболочки с именем 1, выполняю его с помощью chmod +x 1и вставляю в него /usr/local/bin, и внутри сценария, который я печатаю #!/bin/shв первой строке, а затем мои команды. С этого момента его очень удобно использовать и быстро выполнить, набрав

1Enter

на терминале, внутри любой папки.

Моя проблема в том, что я сейчас работаю на компьютере, на котором не могу ничего сделать, sudoи я не могу ожидать его получения, поэтому я не могу разместить свой скрипт /usr/local/bin.

Какие у меня варианты? Есть ли другой путь с такой же способностью «бежать из любого места», к которому я могу получить доступ sudo, или другой способ достичь чего-то эквивалентного?

В принятом ответе на этот пост написано

Для пользовательских сценариев используйте bin / в вашем домашнем каталоге.

Что я и пробовал, но binв моем домашнем каталоге нет папки, и когда я ее создал, я все равно не мог запустить скрипт из другого места.

Я работаю на Ubuntu 12.04 LTS.


2
Не используйте 1 или что-то подобное в качестве имени скрипта. Попробуйте вычислить что-то в своей оболочке: например, expr 1 + 1 (и если вы этого не делаете, какой-то скрипт наверняка сделает это в какой-то момент)
frlan

1
@frlan: Как expr 1 + 1повлияет наличие скрипта с именем 1?
psmears

Правда ... не влияет expr, ни Баш арифметика $(( 1 + 1 )).
Campa

Ответы:


19

Какие у меня варианты? Есть ли другой путь с такой же способностью «бежать из любого места», к которому я могу получить доступ без sudo, или другой способ достижения чего-то эквивалентного?

Как это сделать?

Создайте в своем доме несколько каталогов, в которых ваши сценарии обычно называются binконвенциями.

mkdir ~/bin

Теперь переместите ваши скрипты в корзину

mv somescript ~/bin

Теперь, как заставить это настроиться отовсюду ?!

Вы должны добавить binв ПУТЬ

Откройте свой .bashrc

gedit .bashrc

и добавьте эту строку:

export PATH=$PATH:/home/username/bin

Не забудьте заменить usernameсвоим именем пользователя

Сохраните и выйдите, затем поставьте bashrc

source .bashrc

и теперь у вас все хорошо, вы можете запустить свой скрипт, как раньше! но вы должны заметить, что это относится только к вашему пользователю.

Примечание. Лучше переименовать сценарии, отличные от 1, 2, поскольку у вас могут возникнуть проблемы с этими именами.


ОБНОВИТЬ:

Вы можете сделать то же самое, просто создав папку bin в вашем доме, а source ~/.profileне ~/.bashrc. Поскольку добавление ~ / bin в вашу PATH уже указано в.profile

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Я использую, export PATH=$PATH:$HOME/binчтобы я мог использовать тот же bashrc для других учетных записей с разными именами пользователей.
Энтони Дж. - справедливость для Моники

1
Просто упоминание ~/bin в $PATHпо умолчанию в Ubuntu. Просто запустите source ~/.profileили выйдите из системы / войдите в систему после создания каталога.
Джейкоб Влейм

@JacobVlijm В какой версии? !!! Я использую 12.04, 14.04, 15.04, и ни у кого из них нет ~ / bin в PATH
Maythux

Во всех из них я всегда использую его, во многих моих (принятых) ответах также никогда не получал никакого комментария по этому поводу, работает дома на пяти системах, но, как уже было сказано, после запуска source ~/.profile. Смотрите (например) здесь: askubuntu.com/a/247422/72216
Джейкоб Влийм

1
Он сказал источник ~/.profile, он никогда не говорил источник ~/.bashrc. :) Кроме того , как правило, переменные среды должны идти в .profileи не .bashrcтак как они только должны быть созданы один раз. (ни в
коем случае нельзя

4

В дополнение к /ubuntu//a/643030/218015 вы также можете определить псевдоним внутри вашего .bashrc для небольших, часто используемых задач. Например

alias ll='ls -l'
alias ls='ls --color=auto'

создаст вам «команду» ll, которая выполняет ls -l и ls будет окрашен после определения псевдонима. На https://wiki.ubuntuusers.de/alias есть еще несколько примеров и инструкции по настройке.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.