Як використовувати ln -s для створення ярлика командного рядка?


11

У мене є файл sh, який я хотів би мати можливість відкрити з терміналу в будь-який час. Я хотів би набрати "студію" в термінал і відкрити андроїд-студію

Я пригадую, що використовував ln -sце, але я забув і вже витратив багато часу на пошук в Інтернеті.

Також у якому каталозі зберігається створене символічне посилання?

Ось синтаксис моїх зусиль, команда не знайдена

ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio
ricardo@debian:~$ studio
bash: studio: command not found

спробуйте ./studio.
Себастьян

Я хочу створити посилання на ./studio, яке я можу відкрити з будь-якого місця, просто набравши студію або банан
rickyjoepr

Якщо ви хочете виконати скрипт з будь-якого місця, використовуючи studioпоодинці, вам слід покласти посилання в місце, де обшукується оболонка. Шкаралупа шукає все в echo $PATH. Ви можете або змінити, $PATHабо помістити посилання в один із каталогів $PATH. Що ви віддаєте перевагу?
Себастьян

4
@Sebastian Будь ласка, використовуйте відповіді, щоб відповісти на запитання, а не на коментарі. І, будь ласка, не пропонуйте видаляти запитання після їх відповіді. Ми тут, щоб створити сховище відповідей, які залишаються поруч і корисні майбутнім відвідувачам.
Жил "ТАК - перестань бути злим"

1
Можливо, вам сподобається aliasкоманда, яка зазвичай використовується замість створення символічних посилань для скорочення імен команд.
Вінні

Відповіді:


10

Команда, яку ви виконували, створила символічне посилання в поточному каталозі. Судячи з підказки, поточний каталог - це ваш домашній каталог. Створення символьних посилань на виконувані програми у вашому домашньому каталозі не є особливо корисним.

Коли ви вводите ім'я програми, оболонка шукає її в каталогах, перелічених у PATHзмінній оточення . Щоб побачити значення цієї змінної, запустіть echo $PATH. Довідники розділені двокрапкою ( :). Типовий шлях є, /home/ricardo/bin:/usr/local/bin:/usr/bin:/binале там багато варіацій.

Вам потрібно створити це символічне посилання в одному з каталогів, перелічених у $PATH. Якщо ви хочете зробити команду доступною для всіх користувачів, створіть посилання в /usr/local/bin:

sudo ln -s /opt/android-studio/bin/studio.sh /usr/local/bin/studio

Якщо ви хочете зробити команду доступною лише вам (що є єдиною можливістю, якщо у вас немає прав адміністратора), створіть посилання в ~/bin( binпідкаталог домашнього каталогу).

ln -s /opt/android-studio/bin/studio.sh ~/bin/studio

Якщо ваш дистрибутив не розміщений /home/ricardo/binу вашому PATH(де /home/ricardoзнаходиться ваш домашній каталог), спершу створіть його mkdir ~/binта додайте до свого PATH, додавши наступний рядок до ~/.profile(створіть файл, якщо його не існує):

PATH=~/bin:$PATH

.profileФайл зчитується при увійти. Ви можете прочитати його в поточному терміналі, виконавши . ~/.profile(це відноситься тільки до програм , запущеним з цього терміналу).


1
+1, але, як коментар Вінні, я думаю, що псевдонім у ньому ~/.bashrcбуде більш простим.
Sparhawk

@Sparhawk Псевдонім буде працювати лише для того, щоб викликати програму лише з інтерактивної оболонки, а не зі скрипту, ярлика на робочому столі чи будь-якої іншої програми.
Жил "ТАК - перестань бути злим"

1
Щоправда, але питання вказує I would like to type "studio" into the terminal, і це випливає з заголовка та цитованих команд.
Sparhawk

1

Найінтуїтивніший спосіб здійснити ваше бажання - це використання псевдоніма. Тип:

alias studio=/opt/android-studio/bin/studio.sh

або введіть пов'язаний псевдонім у .profile або краще: що ваша оболонка використовує як $ ENV.

Зауважте, що вам потрібно буде додати

/opt/android-studio/bin

на ваш PATH, щоб мати можливість використовувати програмне забезпечення. Найкраще спершу спробувати, чи працює він без розширеного ПАТ.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.