Linux – Fix ‘sqlcmd: command not found’ in SQL Server

sql serversql-server-2017Ubuntu

Whenever I run sqlcmd I get "command not found"

sqlcmd -S localhost -U SA -P '<YourPassword>'
sqlcmd: command not found

How can I resolve that?

Best Answer

There are two methods of resolving this.

  1. User-specific method advocated in the manual: add the directory to the environmental variable PATH.
  2. System-wide method: symlink the executable to a directory already in the path.

User-specific Method

You can use the tutorial's recommended method. The tutorial states the following:

Optional: Add /opt/mssql-tools/bin/ to your PATH environment variable in a bash shell.

To make sqlcmd/bcp accessible from the bash shell for login sessions, modify your PATH in the ~/.bash_profile file with the following command:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile

To make sqlcmd/bcp accessible from the bash shell for interactive/non-login sessions, modify the PATH in the ~/.bashrc file with the following command:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

This works, but it only affects that user's sessions, and only if they use bash.

System-wide Method

Link the MS SQL tools into a location accessible to all users:

sudo ln -s /opt/mssql-tools/bin/* /usr/local/bin/

This could be in their postinst script, which would make sense for installing an optional package.

Both methods are compliant with the File system Hierarchy Standard, which states:

Programs to be invoked by users must be located in the directory /opt/<package>/bin