Пользовательская команда не работает

1

В моей Ubuntu я попытался создать собственную команду:

  1. Я добавил bash-скрипт с именем ns3 в /usr/bin

     #!/bin/bash  
     cd ns3/ns3-allinone-3.19/ns-3.19
    
  2. Я сделал это исполняемым

    chmod +x ns3
    

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

adrian008
источник
Потому что когда вы выполняете свою команду и скрипт bash заканчивается, вы возвращаетесь в прежний каталог. Вы должны сделать функцию и ее источник, чтобы сделать постоянное изменение каталога.
Hastur
@Hastur не могли бы вы привести пример того, как это сделать. Большое спасибо за вашу помощь.
adrian008
Здесь следует сказать, что вы не должны помещать пользовательские команды в / usr / bin, для этого предназначен / usr / local / bin.
nod

Ответы:

0

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

Вы можете сделать псевдоним или функцию (если вам нужно передать какой-то параметр).

 alias ns3='cd ns3/ns3-allinone-3.19/ns-3.19'

это должно работать для вас. Положить в свой ~/.bash_aliases если у тебя есть. Это скрытые файлы (начинается с . и это в вашем домашнем каталоге ~ ). Если нет, вы можете добавить source ~/.alias как последняя строка вашего .bashrc и запишите все ваши псевдонимы в этом файле. Когда вы будете работать с другой машиной, вы всегда можете скопировать .alias и добавьте одну строку в ваш новый .bashrc,


Функция

  Hello() { echo "Hello " $1 " here I am for you" ; }

Из подсказки пишешь Hello Adriano и оболочка ответит Hello Adriano here I am for you, $1 для 1-го параметра $2 для второго ...

Hastur
источник