7

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

Команда, которую я использую:

ln -s /path/roo.sh /usr/bin/roo

Но когда я roo , он говорит, что команда не найдена. Если я /path/roo.sh , он работает. Я где-то пропускаю шаг?

5 ответов5

7

То, что ты сделал, должно работать. Поиск проблемы:

  1. Вы под рутом? Ли команда на самом деле ln успех? Проверьте с помощью ls -l /usr/bin/roo которой должна быть показана вновь созданная ссылка. Если ссылка отсутствует, добавьте "sudo" перед тем, как ln запустит ее как root (sudo запросит пароль root):

    sudo ln -s /path/roo.sh /usr /bin /roo

  2. Иногда bash запоминает, где находится определенный исполняемый файл, и не выполняет поиск в других местах. Введите hash -r чтобы забыть, а затем снова попробуйте roo .

  3. «/usr /bin» определенно должен быть в вашей переменной PATH, но проверять не повредит: echo $PATH должен включать «/usr /bin»

2

Используйте команду alias roo="/usr/bin/roo"

1

Если вы пытаетесь использовать roo в качестве команды, вы можете посмотреть на команду alias.

В этом случае вы бы сделали:

alias roo="path to roo"

чтобы позвонить вам нужно просто сделать roo

Например

alias test="ruby /Users/user/Desktop/test.rb"
0

Мой echo $PATH показал мне, что /usr /local /bin / также был в моем пути, поэтому я просто использовал /usr /local /bin / roo в качестве цели ссылки.

ln -s /path/roo.sh /usr/local/bin/roo
0

Я думаю, что символическая ссылка не создана, так как вы можете сделать это только с помощью sudo из терминала. Пожалуйста, проверьте /usr /bin /roo существует.

Если существует, попробуйте команду echo ${PATH} , она покажет вам папки, в которых командная оболочка выполняет поиск. Если он не содержит /usr /bin, попробуйте исправить это, добавив export PATH="${PATH}:/usr/bin" в ваш ~ /.profile

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .