Как использовать ln -s для создания ярлыка командной строки?

11

У меня есть файл sh, который я хотел бы открыть из терминала в любое время. Я хотел бы набрать "studio" в терминале, и Android Studio открыт

Я помню, как использовал ln -sдля этого, но я забыл и уже потратил много времени на поиск в Интернете.

Кроме того, в каком каталоге хранится созданная символическая ссылка?

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

ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio
ricardo@debian:~$ studio
bash: studio: command not found
rickyjoepr
источник
попробуй ./studio.
Себастьян
Я хочу сделать ссылку на ./studio, которую я могу открыть из любого места, просто набрав в студии или banana
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.

Шили
источник