Ru-Board.club
← Вернуться в раздел «UNIX»

» Смена каталога из скрипта в sh/bash

Автор: SergeyKulikov
Дата сообщения: 24.03.2011 12:31
Для tcsh в /etc/csh.cshrc добавил строчку: alias dc "cd \!:1 && ls -FaG && pwd"

В оболочке tcsh запускаю комманду: dc /etc
Результат выполнения: сначала переходит в папку /etc, потом делает распечатку и в конце выводит pwd. После завершения скрипта остаёмся в папке в которую перешли. Работает правильно

Для bash в /etc/profile добавил строчку: alias dc="cd $1 && ls -FaG && pwd"

В оболочке bash запускаю команду dc /etc
Результат выполнения: сначала переходит в папку ~/, потом делает распечатку и в конце выводит pwd. После завершения скрипта остаёмся в папке с которой запускали команду. Работает неправильно



Забил на эти алиасы для bash-а и создал файл dc, сделал его исполняемым. Прописал в файл:
#!/bin/sh
cd $1 && ls -FaG && pwd

В оболочке bash запускаю запускаю файл ./dc /etc
Результат выполнения: сначала переходит в папку /etc, потом делает распечатку и в конце выводит pwd. После завершения скрипта остаёмся в папке с которой запускали команду. Работает неправильно

cd срабатывает только на время выполнения bash скрипта.



Как реализовать, то, что я хочу?
Я часто пишу cd /путь, потом распечатываю ls -FaG и после этого иногда забываю, где нахожусь и делаю pwd
Как можно сделать, чтобы работало всё это по одной команде dc /путь ?

Автор: Alukardd
Дата сообщения: 24.03.2011 13:04
SergeyKulikov
тема про sh/bash и т.п.

Если через скрипт делать то всё правильно. только скрипт надо вызывать не просто, а так: . ~/dc /etc или source ~/dc /etc.
Как это сделать через alias я не знаю.
Автор: SergeyKulikov
Дата сообщения: 24.03.2011 13:09
>> Если через скрипт делать то всё правильно
Неправильно.



Добавлено:
Могли бы Вы показать скриншот Вашего экрана? Я хочу убедиться, что у Вас это сработало. Уверен на 99%, что не сработало, так как надо
Автор: Alukardd
Дата сообщения: 24.03.2011 13:14
SergeyKulikov

1 - Завалите в указанную тему пожалуйста!
2 - прочитайте внимательно мой пост!
Цитата:
скрипт надо вызывать не просто, а так: . ~/dc /etc или source ~/dc /etc
(проверял - работает)
Автор: SergeyKulikov
Дата сообщения: 24.03.2011 13:17
>> 1 - Завалите в указанную тему пожалуйста!
Создать в теме http://forum.ru-board.com/topic.cgi?forum=65&topic=2790#1 такое же сообщение? Или что именно сделать?

Действительно работает! Впервые слышу про то, что такое точка перед путём и про source

Спасибо большое!
Автор: Alukardd
Дата сообщения: 24.03.2011 13:27
Да обычно в тему уходят после 1-ой просьбы с дубликатом вопроса. Если ответ еще не получили то переместитесь в указанную тему.

[more=Вот]alukardd@admin:~$ pwd
/home/alukardd
alukardd@admin:~$ . ~/dc /bin
./ bzfgrep@ chvt* dnsdomainname* grep* lessfile@ mktemp* nc.traditional* pwd* sh@ true* zdiff*
../ bzgrep* con2fbmap* domainname* gunzip* lesskey* modeline2fb* netcat@ rbash@ sh.distrib@ umount* zegrep*
bash* bzip2* cp* dumpkeys* gzexe* lesspipe* more* netstat* readlink* sleep* uname* zfgrep*
bunzip2* bzip2recover* cpio* echo* gzip* ln* mount* nisdomainname* rm* stty* uncompress* zforce*
busybox* bzless@ dash* egrep* hostname* loadkeys* mountpoint* open@ rmdir* su* unicode_start* zgrep*
bzcat* bzmore* date* false* ip* login* mt@ openvt* rnano@ sync* vdir* zless*
bzcmp@ cat* dd* fbset* kbd_mode* ls* mt-gnu* pidof@ run-parts* tailf* which* zmore*
bzdiff* chgrp* df* fgconsole* kill* lsmod* mv* ping* sed* tar* ypdomainname* znew*
bzegrep@ chmod* dir* fgrep* less* mkdir* nano* ping6* setfont* tempfile* zcat*
bzexe* chown* dmesg* fuser* lessecho* mknod* nc@ ps* setupcon* touch* zcmp*
/bin
alukardd@admin:/bin$ pwd
/bin
alukardd@admin:/bin$ cat ~/dc
#!/bin/sh
cd $1 && ls -FaG && pwd
alukardd@admin:/bin$
[/more] мой листинг.
Автор: SergeyKulikov
Дата сообщения: 24.03.2011 13:28
Alukardd, спасибо большое! Извините, пожалуйста, что нарушил правила форума. Я свой вопрос благодаря Вам решил и тему можно удалять
Автор: 01MDM
Дата сообщения: 24.03.2011 22:57

Цитата:
cd срабатывает только на время выполнения bash скрипта.



Код:
. ./script
Автор: Alukardd
Дата сообщения: 24.03.2011 22:59
01MDM
вы слегка запоздали)))
в первом же ответе это сказано...
Автор: 01MDM
Дата сообщения: 24.03.2011 23:02
Alukardd
Действительно, извиняюсь, не заметил.

Страницы: 1

Предыдущая тема: Проблемы с openfire


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.