Установить постоянный ярлык команды в терминале на cd для загрузки [дубликат]

На этот вопрос уже есть ответ здесь:

Я написал новый текстовый файл в / bin с именем ram , который содержит:

watch -n 1 free -h

и файл sen :

watch -n 1 sensors

в одной папке, чтобы каждый раз не вводить

watch blahblahblah...

.

Кроме того, я изменил права доступа этих двоих с

-rw-r--r--

на

-rw-r--r-x

и достиг своей цели. Он работал даже после повторного открытия оболочки, то есть тогда я мог набрать ram вместо watch -n 1 free -h

Но проблема возникла после того, как я попробовал ту же процедуру для

cd /home/myname/Downloads/

и новый текстовый файл, сохраненный в / bin и названный dow , то же самое с разрешениями.

На этот раз dow ничего не делает в терминале, даже не показывает никаких сообщений.

Я попытался сохранить тот же файл в / usr / bin , но снова терминал ничего не делает, и мой рабочий каталог не меняется.

Как такое возможно?

5
задан 23 March 2018 в 13:13

2 ответа

Вы записали сценарий, и он работает. Это просто не делает то, что Вы хотите, потому что сценарий работает в отдельной оболочке от оболочки, которая называет его.

Оболочка, что выполнения сценария в делают точно, чему сценарий говорит ее; это изменяет свой рабочий каталог на ~/Downloads. Нет ничего иного, чтобы это сделало, таким образом, это выходит. Каталог оболочки вызова не был изменен.

Вы не имеете к честное слово - можно продемонстрировать это путем добавления ls на следующей строке Вашего dow файл. Содержание Вашего ~/Downloads каталог (принимающий это имеет некоторых) будет затем перечислен при выполнении команды (без обычных цветов, которые обеспечиваются псевдонимом в Вашем ~/.bashrc тот неинтерактивные оболочки не читают).

Для выполнения сценария в текущей оболочке можно использовать source команда, которая может также быть записана как . file. Так, если Вы вводите

. dow

Ваша текущая оболочка изменит каталог.

Или, можно вместо этого установить псевдоним:

zanna@toaster:~$ alias dow='cd $HOME/Downloads'
zanna@toaster:~$ dow
zanna@toaster:~/Downloads$ 

Для создания этого постоянным добавьте строку

alias dow='cd $HOME/Downloads'

к Вашему ~/.bashrc файл. Это затем будет доступно каждый раз, когда Вы выполняете интерактивную оболочку.

7
ответ дан 23 November 2019 в 08:50

Это - дубликат перекрестного сайта: https://stackoverflow.com/a/255415/383694.

Проблема - то, что скрипт запущен в подоболочке. Каталог изменений сценария и затем закрывается, не внося изменения в Вашу текущую оболочку.

Два смягчения:

  1. выполниться . dow сделать сценарий выполненным в контексте текущей оболочки.
  2. используйте псевдоним, например, в Вашем ~/.bashrc файл, который делает изменение каталога - например, alias dow="cd /home/myname/Downloads/".

При изменении каталога, это обычно - хорошая идея протестировать это, это работало прежде, чем сделать другие вещи.

В связанном вопросе существуют некоторые другие опции.

3
ответ дан 23 November 2019 в 08:50

Другие вопросы по тегам:

Похожие вопросы: