2016-03-27 5 views
0

, поэтому я уже нашел это здесь несколько раз, но я не совсем понял ответ.Запуск сценария оболочки из любого (неспецифического) каталога

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

Так что я хотел бы создал свой собственный сценарий

сделал следующий

$ mkdir myscripts 
$ cd myscripts 
$ vim dirstatus.sh 

Внутри dirstatus.sh я просто написал простой сценарий, я больше заинтересован в создании сценария исполняемый из любого каталога.

Так

#!/usr/bin/env sh 
# My own script - Experimenting with Shell 
# Setting path export 
export PATH=$PATH:~/bin/myscripts 
printf "The current directory is $(pwd) \n 
Path of this script is $(PATH)" 

после этого я сделал

$ chmod +x dirstatus.sh

Когда я ./dirstatus.sh внутри каталога MyScripts он работает

Однако, когда я $ dirstatus в любой другой каталог или даже внутри каталога myscripts

я получаю следующую ошибку

~ksh: dirstat: command not found

Любые решения?

+0

Вы могли бы сохранить псевдоним в '~/.bashrc' вместо этого? – jDo

+0

«Когда я делаю /dirstatus.sh внутри каталога myscripts, он работает»: Impossible, это всегда будет выполняться '/ dirstatus.sh' в корневом каталоге –

+0

@DiegoTorresMilano Возможно, он просто забыл вставить полную остановку (или он фактически размещен сценарий в корне, но я сомневаюсь в этом) – jDo

ответ

1

Проблема заключается в том, что каталог myscripts, содержащий файл dirstatus.sh, не находится в пути к сеансу терминала. Предполагая, что вы сделали каталог MyScripts внутри вашего дома, вы можете сделать следующее:

PATH=~/myscripts:$PATH 

Чтобы сделать эти изменения работы на всех новых терминальных сессий, вы можете добавить выше в ~/.profile или ~/.bash_profile файлы, загружаемые при входе в систему.

+0

Вот как я теряюсь Поскольку это (как уже упоминалось) не персональный сервер, всякий раз, когда я подключаюсь к нему, я помещаюсь в конкретный каталог, например. home/users/me однако домашний каталог не соответствует моим личным требованиям. Поэтому я не уверен, если я должен создать новый файл .bash_profile внутри, где я подключился или что-то еще. – Rawrplus

+0

Как правило, всякий раз, когда вы ставите, когда вы впервые регистрируетесь на сервере, это ваш домашний каталог. Вы также можете запустить 'echo $ HOME', чтобы увидеть переменную окружения для своего домашнего каталога. – Jenos

+0

Расширение Tilde не поддерживается 'sh' (хотя Bash поддерживает его даже в режиме POSIX). Для переносимости вы должны использовать '$ HOME'. – tripleee

Смежные вопросы