4

I know there is lots of information on this around, but I still find it confusing. Please help me with this quick one liner.

What do I need to write and where to make this a permanent feature of my system?

This is the command:

sudo apt update &&\
sudo apt upgrade -y &&\
sudo flatpak update &&\
conda upgrade --all -y

Maybe call it with sudo updateall

Slight digression: I asked a question about upgrade appimage and snap a while ago. There exists appimagehub but it pooly supported at the current time and snap by design updates without user involvement and there is no way to change this I believe. The others here can be manually updated.

Zanna
  • 69,223
  • 56
  • 216
  • 327
jonathanbsyd
  • 405
  • 1
  • 6
  • 17
  • I'd store your 'command' in a text file 'updateall' (maybe as a second line with `#!/bin/bash` as the first line). next `chmod a+rx` the file so its executable. finally make it available to anyone & everywhere `sudo ln -s /home/user/updateall /usr/local/bin/updateall` (or somewhere else you want in your $PATH), so anyone can execute it. it can also be done in other ways eg. your own ~/bin or using alias etc – guiverc Nov 23 '17 at 01:14
  • 1
    Personally, I'd separate the commands. && implies relying on previous commands to work. For apt upgrade and update it makes sense, but doesn't for other two. So `sudo bash -c 'apt update && apt upgrade'` and let other two run by themselves. But that's just my opinion. – Sergiy Kolodyazhnyy Nov 23 '17 at 09:28

3 Answers3

3

In your rc file usually .bashrc with vim ~/.bashrc or nano ~/.bashrc add:

makealias() { echo "alias $1"="'${@:2}'" >> ~/.bashrc; }

Next time you want to add a bash alias just use:

makealias name command

Example: makealias brc vim ~/.bashrc

EDIT

This method does work with sudo, &&, || and other operators like ; if you enclose them in single quotes when making the alias.

Example: makealias updateall sudo apt-get update '&&' sudo apt-get upgrade

Do yourself a favor and use ; instead of && that is good practice.

himanshuxd
  • 348
  • 5
  • 16
0

Create a file updateall, put it on your path /usr/local/bin and make it executable.

You can format the file like this:

#!/bin/sh

sudo apt-get update
sudo apt-get upgrade -y
sudo flatpak upgrade
conda upgrade --all -y

Then just run the script as updateall (without sudo)

waltinator
  • 35,099
  • 19
  • 57
  • 93
thomasrutter
  • 36,068
  • 10
  • 86
  • 105
  • 3
    I think this is actually a more elegant solution by removing sudo from the script. Except that conda is *not* a sudo command so that doesn't actually work. – jonathanbsyd Nov 23 '17 at 01:29
  • You can allow the `conda` command to be run as a normal user as [terdon explains here](https://askubuntu.com/questions/425754/how-do-i-run-a-sudo-command-inside-a-script/425990#425990) – Zanna Nov 23 '17 at 09:26
  • Answer modified to run all commands except `conda` with sudo. – thomasrutter Nov 23 '17 at 22:19
  • `sudo -u $USER conda upgrade --all -y` does the job of running conda without `sudo` privileges. – himanshuxd Dec 13 '17 at 05:29
-2

To make it available to all users who have sudo privileges(needed for the commands)

sudo nano /etc/bash.bashrc

To make it available for your user only sudo nano /home/yourusername/.bashrc

Go to the bottom of the file and add your aliases like so, I included the commented out (#)ALIAS LIST title

#ALIAS LIST

alias updateall='apt update && sudo apt upgrade -y && sudo flatpak upgrade && conda upgrade --all -y'

alias sudo='sudo '

Save the file, then run exec bash from the terminal.

The first alias is your command, the second alias allows you to use sudo with aliases.

m_krsic
  • 559
  • 2
  • 10