#bash
#bash
Вопрос:
Я хочу изменить каталог в Linux, используя файл bash. Ниже приведен используемый фрагмент кода.
#!/bin/bash
alias proj="cd /home/prag/Downloads"
Но при запуске файла bash ответа нет, т. е. он остается в том же каталоге. Почему это так.? Почему здесь не работает псевдоним или я должен сделать что-то другое.?
Ответ №1:
Запуск файла bash не сработает, поскольку изменение текущего рабочего каталога остается в скрипте (поскольку это отдельный процесс по сравнению с процессом, который выдает вам командную строку — bash).
Добавьте псевдоним в ваш файл ~/.bash_aliases или ~/.bashrc (предпочтительнее первое, второе может быть быстрее, если первое не существует), и тогда это должно сработать.
Комментарии:
1. спасибо, что прояснили это. можете ли вы помочь мне в написании псевдонима, поскольку я новичок в bash.
2. Вы уже написали это. Просто скопируйте ‘псевдоним proj=»cd /home/prag/Downloads»‘ в ваш файл .bash_aliases или .bashrc. Сохраните его, затем закройте свой терминал и снова откройте его, и ваша команда должна сработать.
3. @pragadheesh: Если это ответило на ваш вопрос, не могли бы вы отметить это как ответ? Спасибо.
Ответ №2:
У каждого процесса есть свой собственный текущий каталог. Когда вы запускаете скрипт bash, и он изменяет свой текущий каталог, а затем существует, это никак не влияет на родительский процесс (то есть оболочку, из которой вы запускаете скрипт).
Вместо запуска ./script.sh
попробуйте source ./script.sh
(или . ./script.sh
для краткости).
Кроме того, определение alias
for cd
само по себе не приведет к изменению каталога. Я предполагаю, что вы на самом деле где-то вызываете псевдоним.
Ответ №3:
Вы хотите сказать, что хотите написать скрипт bash, который перенесет cd в другой каталог?
Тогда зачем использовать псевдоним? Просто используйте команду «cd»!
Комментарии:
1. Для ускорения. Если вы часто заходите в этот каталог, то имеет смысл присвоить ему псевдоним. У меня есть небольшая программа и запись bash_aliases, которую я использую, которая позволяет мне хранить «закладки» терминала. Я просто набираю ‘pj foo’, и это приводит меня к каталогу, сохраненному под этим именем.
Ответ №4:
Это потому, что ваш скрипт выполняется в новом процессе оболочки, когда вы вызываете его как ./cd.sh
. Таким образом, ваш скрипт изменит каталог в этой подоболочке, и когда ваш скрипт завершит работу, управление вернется к вашей предыдущей оболочке.
Вы можете вызвать свой скрипт подобным образом . cd.sh
— при этом скрипт выполняется в текущей командной строке, и cd-команда работает.